Как использовать @types с помощью TypeScript 2
До сих пор мы привыкли к tsd или (лучшая версия) типизация
Но теперь, когда TypeScript 2 предлагает новую функцию @types
, как мне преобразовать мой текущий проект в работу с @types?
У меня есть tsd.json(typings.json - это некоторые случаи) со всеми зависимостями, каковы шаги для перехода на TypeScript 2?
Каковы новые передовые методы?
Поддерживает ли @types определенные версии?
Спасибо!
Ответы
Ответ 1
Это очень просто. Просто установите определения, которые вам нужны через npm.
Например, если вам нужен lodash, вы можете сделать:
npm install --save @types/lodash
После установки вы можете сразу использовать его в своем проекте. Typescript будет разрешать типизацию установленного пакета @types из папки node_modules/@по умолчанию. Нет необходимости в файле tsd.json или typings.json.
Дополнительные пункты:
- Основная и младшая версия пакета @types в npm должна соответствовать версии пакета.
- Здесь вы можете искать типы: http://microsoft.github.io/TypeSearch/
- Читайте о
typeRoots
и types
здесь. В частности, обратите внимание на эти два момента:
- Если в tsconfig.json указано
typeRoots
, для корней типа будут использоваться только указанные папки. Это исключает. /npm _modules/@types/, если вы не укажете его.
- Если
types
указан в tsconfig.json, тогда будут включены только указанные пакеты.
Подробнее в сообщении блога здесь.
Ответ 2
Typescript 2.0 избавляется от предыдущей системы Типизация.
Теперь Typescript 2.0 должен по умолчанию просматривать ./node_modules/@types
и получать типы, которые вы установили в качестве отдельных модулей node, например. npm install --save @types/react
(как упоминалось @David Sherret)
В текущей версии Typescript 2.0 betastrong > есть ошибка, которая не загружает новые типы. Вручную с помощью 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"
помогло. Надеюсь, это сэкономит время разработки.
Ответ 3
Похоже, что они всего лишь пакеты npm, вы можете найти все поддерживаемые здесь.
tsc отобразит все типы в папке node_modules.
Вы можете перемещать зависимости, которые у вас есть в typings.json, в package.json (при условии, что вы тоже изменили имена).
Вы можете узнать больше об этом здесь.
Ответ 4
как мне преобразовать мой текущий проект в работу с @types
Я определенно рекомендую держаться немного дольше.
например. проблемы все еще исправляются... всего 4 часа назад: https://github.com/Microsoft/TypeScript/issues/9725#issuecomment-233469422