TypeScript в пакетах npm @types org


135

Я заметил, что есть организация nty @types , которая содержит пакеты для набора текста, но не может найти никакой документации по ней. Как они предназначены для использования?

Это предназначено для использования с инструментом набора текста ? Если да, то как их установить? Например, есть @types/openlayersпакет, но typings search npm:openlayersничего не возвращается.

Он предназначен для использования отдельно от инструмента набора текста? Например, установлен непосредственно с npm?


11
Спасибо за этот вопрос.
Леон Пеллетье

Ответы:


109

Начиная с TypeScript 2.0, печатание больше не требуется. Организация npm - это организация, которая настраивает команду разработчиков. Я считаю, что Microsoft настроила организацию @types в npm и добавила в нее команду разработчиков TypeScript. Пакеты, входящие в организацию @types, публикуются автоматически из DefiniteTyped с использованием инструмента types-publisher согласно документам .

Кроме того, есть еще один способ добавить typesв ваши пакеты:

В вашем package.json

Если в вашем пакете есть основной .jsфайл, вам также необходимо указать основной файл декларации в вашем package.jsonфайле. Установите typesсвойство так, чтобы оно указывало на ваш файл декларации. Например:

{
    "name": "awesome",
    "author": "Vandelay Industries",
    "version": "1.0.0",
    "main": "./lib/main.js",
    "types": "./lib/main.d.ts"
}

Обратите внимание, что "typings"поле является синонимом "types"и может использоваться также.

Также обратите внимание, что если ваш основной файл декларации назван index.d.tsи находится в корне пакета (рядом с index.js), вам не нужно отмечать "types"свойство, хотя это рекомендуется делать.

Что касается типов поиска

По большей части пакеты объявлений типов всегда должны иметь то же имя, что и имя пакета в npm, но с префиксом @ types /, но если вам нужно, вы можете проверить https://aka.ms/types, чтобы найти пакет для вашей любимой библиотеки.

От - http://www.typescriptlang.org/docs/handbook/declaration-files/consump.html

Но когда я это сделал npm search @types/openlayers, я не получил никаких результатов. Но поиск в веб-интерфейсе дал мне результаты. Так что я думаю, npm searchчто не ищет между организациями.


Отличный ответ! Незначительные правки были бы хороши, но это намного лучше объясняет текущее состояние.
Рональд Zarīts

Поскольку вы указываете один файл в своем свойстве package.jsonпод typesсвойством, я заметил, что вы говорите о пакетном файле декларации . Какой самый простой способ достичь этого в автоматизированной системе сборки, такой как gulp?
Ники

Нужно ли добавлять "main"поле, если основной файл называется index.js?
Кну

2
Большое спасибо за это «Обратите внимание, что "typings"поле является синонимом "types"и может быть использовано также»
Сергей Попов

42

Объявление в блоге TypeScript отвечает на это: будущее файлов декларации

Резюме:

Организация @typesnpm предназначена для получения определений типов с помощью npm. Использование этих определений типов входит в состав TypeScript 2.0.

Это заменит текущие проекты / инструменты, такие как typings и tsd , хотя они будут поддерживаться в течение некоторого времени.


1
Привет, Рон, так что я пытаюсь получить эти настройки, но не похоже, что VSCode понимает, что я их установил. После использования чего-то вроде core-jsw / npm i @types/core-js --saveя вижу, что это в папке, но проект все равно выдает ошибки для вещей. Есть ли что-то еще, что я должен делать? Мне нужно, чтобы tsconfig знал о @types или о чем-то? Как сказал Шон, документации по типам еще нет :(
Марк Писак - Trilon.io

@MarkPieszak Вы должны быть уверены, что VSCode использует TS2.0. Посмотрите, как установить TypeScript локально и использовать его в VSCode, здесь: github.com/Microsoft/TypeScript/wiki/Nightly-drops
nino.porcino

Да, это было @ nino.porcino спасибо :) tsdkнужно было указать на установку бета-версии 2.0 бета-версии
Mark Pieszak - Trilon.io

по крайней мере , для некоторых проектов команды мы обновляем (а также в других проектах GH мы видели), следует также обновить tsconfig.jsonс "types"свойством массива перечисляя эти имена модулей, например"types": ["core-js"]
superjos

7

Это будет функция, которая развернута в Typescript 2.0. Это обеспечивает поддержку типов для модулей / библиотек UMD и их соответствующих определений.

См. ( Встроенная поддержка определений модулей UMD ), чтобы лучше понять проблемы, возникающие в настоящее время с окружающими типами.


Спасибо! Это полезно, но я не вижу проблемы GitHub, обсуждающей организацию @types npm. Является ли @types org специально для /// <referenceсценария UMD ? Будет ли компилятор TypeScript автоматически искать типы в node_modules/@types(как он ищет модули node_modulesкогда 'moduleResolution': 'node')? Что это означает для typings- это также обрабатывает окружающие зависимости. Это как-то связано?
Рональд Зариц
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.