2017-01-20 6 views
1

Я использую TypeScript с RequireJS. Как вы можете видеть на следующем изображении, я определяю некоторые импорты, используя конфигурацию RequireJS; конечно, эти импорта получены с помощью <script> тегов:Объявление RequireJS зависимостей с TypeScript

enter image description here

машинописи не может видеть эти заявления, так что я думал только декларируют их как глобал или что-то, чтобы избежать ошибок transpilation. Что может быть лучше всего в этой ситуации? Кажется, все работает нормально, но я получаю больше ошибок компиляции и, конечно же, красную подсветку синтаксиса повсюду.

На первом изображении мы видим, что requirejs не распознается, также в нижеследующем изображении мы видим, что TypeScript не знает, что такое 'redux', (но он находится в конфигурации RequireJS).

enter image description here

Так что я хотел бы сделать, это сказать Машинопись о следующих зависимостей: requirejs, Redux, среагировать, rxjs, socketio и т.д.

+1

как в стороне, к тому же проблема упоминается в вопросе, RequireJS кажется, работает очень хорошо с TS; TS просто закроет ваш код синтаксисом AMD, когда вы перейдете, а затем RequireJS будет загружать ваши файлы по отдельности (в режиме разработки). –

+2

Вы пробовали 'npm install --save-dev @ types/redux'? (а также с остальными вашими зависимостями?) – thedayturns

+0

Да, у меня для большинства моих депов ... но я думаю, что TS ожидает, что redux станет установкой npm, и это не так :) вы следуете? –

ответ

1

Так что часть этой проблемы мне было необходимо для работы:

npm install -D @types/requirejs 
npm install -D @types/redux 

, а затем в моем tsconfig.json добавить:

"types": [ 
     "node", 
     "lodash", 
     "react", 
     "react-dom", 
     "redux", 
     "react-redux", 
     "async", 
     "requirejs" 
    ], 
    "typeRoots": [ 
     "node_modules/@types" 
    ], 

, но и для решения проблемы машинопись не понять, где <script> зависимости тегов приходят от в переднем конце, это похоже, что мы можем сделать что-то вроде этого:

https://weblog.west-wind.com/posts/2016/Sep/12/External-JavaScript-dependencies-in-Typescript-and-Angular-2

De-ссылающихся Globals Чтобы сохранить компилятор Typcript счастливым и не закончиться ошибками компиляции или иметь нагрузку на лодку типа , вы можете использовать только один или два раза, иногда проще просто управлять внешними библиотеками самостоятельно. Импортируйте его с помощью обычного тега сценария или упакованного как часть отдельного пакета поставщиков , а затем просто ссылайтесь на главную страницу.

Таким образом, вместо того, чтобы использовать импорт, чтобы тянуть в библиотеке, можно просто импортировать с помощью тега, как и в прошлом:

Тогда в любом классе Машинопись/компонент, в котором вы хотите использовать эти библиотеки явно разыменовать каждый из библиотека Глобал по явно с помощью объявить и разливочные их к любому:

declare var redux:any; 
declare var socketio: any;