2015-09-18 3 views
0

я шел по следующему JSX машинопись учебник: https://github.com/RyanCavanaugh/jsx-introмашинопись командной строки компиляции завершается успешно, но ошибки отображается

Использование tsc.cmd -w команды, следующий код компилируется и успешно выполняет в браузере, но я все еще получаю ошибки консоль:

// app.tsx 
var content = <div>Hello, world!</div>; 

$(() => { 
    let target = document.getElementById('output'); 
    React.render(content, target); 
}); 

`

app.tsx(30,16): error TS2304: Cannot find name 'React'. 
<br>app.tsx(34,5): error TS2304: Cannot find name 'React'. 
<br>message TS6042: Compilation complete. Watching for file changes. 

`

Почему все еще возникают ошибки, даже если компиляция завершается успешно? Как избавиться от ошибок?

Я использую машинопись 1.6

ответ

0

Почему я до сих пор получаю ошибки, даже если компиляция успешно

Просто потому, что вы получите от JS машинописи не означает компиляцию преуспевает. Вот еще по теме: Type errors do not prevent JavaScript emit.

Как избавиться от ошибок

Вам нужен react.d.ts файл (tsd install react) (more)

+0

Спасибо. Я не знал, что TypeScript испускает JavaScript, даже если есть ошибки компиляции. Ответ на мой второй вопрос не помог, хотя, поскольку у меня уже есть необходимые типизации, установленные в соответствии с шагами в связанной статье. –

+0

Поскольку вы не используете * внешние модули *. Используйте 'tsd install react-global', чтобы получить * глобальную * версию реакции (https://github.com/borisyankov/DefinitelyTyped/blob/master/react/react-global.d.ts). Тем не менее я настоятельно рекомендую вам использовать файловые модули с чем-то вроде weback. https://basarat.gitbooks.io/typescript/content/docs/project/external-modules.html – basarat

0

basarat ответил на мой первый вопрос, но я до сих пор возникли проблемы с ошибки компиляции.

После того, как мы снова посмотрели на ошибки, я понял, что компилятор TypeScript не смог найти React, но у него не возникло проблемы с поиском JQuery. Поэтому я открыл файл React.d.ts и, конечно же, это проблема. Пространство имен React было названо __React вместо React. Aliasing пространства имен, как так

import React = __React; 

позволило мне избавиться от ошибок машинописи, но, к сожалению, приложение затем ожидает, чтобы найти глобальную переменную __React. Но библиотека React, загруженная с Bower, имела переменную, называемую React, как и следовало ожидать.

Я добавил следующий скрипт после того, как в том числе реагировать скрипт в файл index.html

<script>var __React = React;</script> 

Это позволило приложение для запуска.

Я не уверен, почему файл определения типа имел это пространство имен, хотя я обошел проблему в правильном направлении, но на данный момент это решило мою проблему.

Update

Я нашел лучший способ ...Установка response-global tsd install react-global предоставляет пространство имен React, что делает вышеупомянутый взломать не требуется

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