2013-12-11 2 views
18

В последнее время я искал React и надеялся использовать JSX и машинопись. Мне не удалось найти какие-либо ресурсы по этому типу или ввести определения для React.Typcript для Facebook React

Можете ли вы использовать TypScript с JSX и доступны определения типов?

+1

Общая проблема с транспилерами и JSX заключается в том, что либо транспилеру необходимо понять или передать код JSX, либо jsx необходимо понять или передать код машинописного текста, поэтому его большая работа для его работы. – krs

+2

см. Эту проблему https://github.com/facebook/react/issues/759 – thorn

+0

Поток Facebook работает как альтернатива TypeScript и поддерживает JSX и ES6. – AgentME

ответ

2

Проведено некоторое исследование и я решил ответить на свой вопрос. Похоже, что компилятор JSX еще не распознает конструкты машинописного текста (надеюсь, он будет позже).

3

Это не будет. Есть много двусмысленности между литьем типа TS:

(<foo>bar) 

и JSX встроенный HTML:

(<foo>bar)</foo>) 
+1

Хорошо, но это не так. слишком легко сдаваться? Я уверен, что есть всевозможные способы обхода, из контекстно-синтаксического синтаксического анализа (что-то вроде, предположим, что это компонент React, но если конечный тег не найден, предположим, что это утверждение типа) для написания утверждений типа TypeScript типа eg. '<> bar' в .tsx файлах. – skrebbel

+1

Похоже, на самом деле это возможно. Я еще не побежал, но продолжайте с осторожностью. https: // GitHub.com/fdecampredon/jsx-typescript – Nathaniel

+0

Да, они просто выкинули ' v' casting в пользу синтаксиса' v as Class' для '.tsx' файлов. – garkin

7

В настоящее время команда The React обсуждает создание аннотаций с машинописными текстами как внутренне используемую вещь. Вскоре это может измениться для вас.

+0

Где я могу найти дополнительную информацию об этом? – Anders

+0

В канале IRC или в примечаниях к выпуску или в их блоге. К сожалению, неправильный ответ отмечен признанным, кто-то неверно заявляет, что есть проблемы с двусмысленностью, поэтому это будет упущено. –

+1

Поскольку я написал это, есть более новые, более умные места для поиска. https://github.com/facebook/react/issues/759 –

1

Что касается JSX:

Вы можете разделить ваши реакции компонентов на два файла. Первая из них будет содержать все, кроме функции рендеринга, и поэтому может быть написана в машинописном документе. Второй - просто реализовать функцию рендеринга с помощью JSX. Я знаю, что это против «реагирования», но он решает эту проблему. У вас будет сила машинописного текста, кроме функции рендеринга.

1

Вы должны проверить следующее разговор:

https://www.youtube.com/watch?v=9PTa9-PPVAc

Он имеет много указателей о том, как сделать работу с React машинопись.

Facebook также недавно анонсировал проект под названием Flow, который также добавляет статический ввод в Javascript. Поскольку они оба являются проектами в Facebook, было бы проще использовать Flow, чем TypeScript при работе с React.js.

Смежные вопросы