Как мне использовать @types с TypeScript 2

До сих пор мы привыкли к tsd или (в лучшей версии) типам.

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

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

Каковы новые рекомендации? Поддерживает ли @types определенные версии?


person gilamran    schedule 18.07.2016    source источник


Ответы (4)


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

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

npm install --save @types/lodash

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

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

  • Основная и дополнительная версии пакета @types в npm должны соответствовать версии пакета.
  • Вы можете искать типы здесь: http://microsoft.github.io/TypeSearch/
  • Read about typeRoots and types here. Specifically pay attention to these two points:
    • If typeRoots is specified in tsconfig.json, then only specified folders will be used for the type roots. That will exclude ./npm_modules/@types/ unless you specify it.
    • Если в tsconfig.json указано types, будут включены только указанные пакеты.

Подробнее читайте в записи блога здесь< /а>.

person David Sherret    schedule 18.07.2016
comment
А как насчет синтаксиса dt~***? - person Royi Namir; 20.04.2017
comment
Уже нашел. Вот, пожалуйста. - person Royi Namir; 20.04.2017
comment
Да, я не знал, что синтаксис изменился с версии 2. (IIUC) - person Royi Namir; 20.04.2017
comment
Спасибо - потратил столько времени, возясь с набором текста. - person eddiewould; 25.06.2017
comment
Этот ответ, в частности без установки typeRoots и types, помог мне с машинописным текстом 3.9.x в 2020 году. - person HJW; 23.05.2020

Typescript 2.0 избавляется от предыдущей системы Typings.
Теперь Typescript 2.0 по умолчанию должен искать в ./node_modules/@types и получать типы, которые вы установили как отдельные узловые модули, например. npm install --save @types/react (как упомянул @David Sherret)

В текущей версии Typescript 2.0 beta есть ошибка, которая не загружает новые типы. Вручную с помощью cmd новый 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". Надеюсь, это сэкономит время разработчиков.

person Artru    schedule 24.08.2016
comment
typeRoots у меня сработал, спасибо! Основная проблема заключалась в том, что мой файл tsconfig.json находится в подпапке моих проектов. Поэтому я добавил: "typeRoots": [ "../node_modules/@types/" ] - person Kert Kaelep; 17.09.2016
comment
Вышеупомянутая проблема исправлена, и теперь машинописный текст загружает новые типы непосредственно из ./node_modules/@types. - person Akshay Gundewar; 06.07.2017

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

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

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

Подробнее об этом можно прочитать здесь< /а>.

person toskv    schedule 18.07.2016

как мне преобразовать мой текущий проект для работы с @types

Я определенно рекомендую продержаться немного дольше.

например проблемы все еще исправляются ... всего 4 часа назад: https://github.com/Microsoft/TypeScript/issues/9725#issuecomment-233469422

person basarat    schedule 19.07.2016