2016-07-18 2 views
42

До сих пор мы привыкли ТСД или (лучший вариант его) типизацииКак следует использовать @types с машинопись 2

Но теперь, машинопись 2 предлагает новую функцию @types, как я должен конвертировать мой текущий проект для работы с @types?

У меня есть tsd.json (typings.json в некоторых случаях) со всеми зависимостями, каковы шаги для перехода на TypeScript 2? Что такое лучшие практики? Поддерживает ли @types определенные версии?

Спасибо!

ответ

44

Это очень просто. Просто установите определения, которые вам нужны, через npm.

Например, если вам нужно lodash вы можете сделать:

npm install --save @types/lodash 

После его установки вы можете использовать его сразу же в вашем проекте. Typcript будет разрешать типизацию установленного пакета @types из папки node_modules/@ по умолчанию. Там нет необходимости в tsd.json или typings.json файл больше.

Дополнительных пункты:

  • Главная и второстепенная версия пакета @types в НОМ должны соответствовать версиям пакета.
  • Здесь вы можете искать типы: http://microsoft.github.io/TypeSearch/
  • Подробнее о typeRoots and types here. В частности, обратите внимание на эти два момента:
    • Если typeRoots указан в tsconfig.json, то только указанные папки будут использоваться для корней типа. Это исключает ./npm_modules/@types/, если вы не указали его.
    • Если types указан в tsconfig.json, тогда будут указаны только указанные пакеты.

Подробнее в блоге here.

+0

Как насчет синтаксиса 'dt ~ ***'? –

+0

@Royi Я никогда не видел этот синтаксис для @ types-only для [typings] (https://github.com/typings/typings/blob/master/docs/tsd.md). Я думал, что определения на определенном типе были [автоматически опубликованы в @types] (https://github.com/DefinitelyTyped/DefinitelyTyped#faq). У вас есть дополнительная информация об этом? –

+0

Уже нашел это. [Здесь вы идете] (http://stackoverflow.com/questions/40734991/whats-the-difference-from-installing-type-definition-files-using-typings-vs-npm). –

3

Похоже, что все они только пакеты npm, вы можете найти все поддерживаемые here.

TSC подберут любые типы в node_modules папки.

Вы можете перемещать зависимости вы имеете в typings.json в package.json (если вы измените имена тоже конечно).

Подробнее об этом можно узнать здесь here.

38

Машинопись 2,0 избавляется от предыдущих типизации системы.
TypScript 2.0 должен по умолчанию просматривать ./node_modules/@types и получать типы, которые были установлены как отдельные модули узлов, например. npm install --save @types/react (как было упомянуто @David Sherret)

Существует ошибка в текущей версии Машинопись 2,0 бета, который не нагружает новых типов. Вручную с помощью cmd new tsc компилирует файлы, но в VS 2015 нет поддержки IntelliSense, и никаких ошибок не обнаружено, пока файл .ts находится в режиме редактирования.

Чтобы устранить это изменить tsconfig.json с аналогичными параметрами:

{ 
    "compilerOptions": { 
    // ... other config rows 
    "typeRoots": [ "node_modules/@types/" ], 
    "types": [ "jquery", "react", "react-dom", /*... your other types */ ], 
    } 
} 

Для меня руководство "types" декларации помогла решить эту проблему, для других парней "typeRoots" помогли. Надеюсь, это сэкономит часы разработчика.

+0

«typeRoots» работал для меня, спасибо! Основная проблема заключалась в том, что мой файл tsconfig.json находится в моей подпапке проектов. Поэтому я добавил: '' typeRoots ": [" ../node_modules/@types/ "]' –

+0

Вышеупомянутая проблема исправлена, и теперь машинопись загружает новые типы непосредственно из './Node_modules/@ types' –

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