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

89

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

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

Используется ли он отдельно от инструмента тиреобразования? Например. установлен непосредственно с помощью npm?

  • 7
    Спасибо за этот вопрос.
Теги:
typescript-typings

3 ответа

73
Лучший ответ

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

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

В вашем пакете. 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/consumption.html

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

  • 0
    Отличный ответ! Незначительные правки были бы хороши, но это намного лучше объясняет текущее состояние.
  • 0
    Поскольку вы указываете один файл в вашем package.json в свойстве types , я заметил, что вы говорите о пакетном файле декларации . Что было бы самым простым способом достичь этого в автоматизированной системе сборки, такой как gulp?
Показать ещё 1 комментарий
36

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

Сводка:

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

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

  • 1
    Привет, Рон, так что я пытаюсь получить эти настройки, но не похоже, что VSCode понимает, что я их установил. После использования что-то вроде core-js w / npm i @types/core-js --save , я вижу, что это в папке, но проект все равно выдает ошибки для вещей. Есть ли что-то еще, что я должен делать? Мне нужно, чтобы tsconfig знал о @types или о чем-то? Как сказал Шон, документации по типам еще нет :(
  • 0
    @MarkPieszak, вы должны быть уверены, что VSCode использует TS2.0. Посмотрите, как установить TypeScript локально и использовать его в VSCode, здесь: github.com/Microsoft/TypeScript/wiki/Nightly-drops
Показать ещё 2 комментария
6

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

См. https://github.com/Microsoft/TypeScript/issues/7125#issuecomment-210182488, чтобы лучше понять проблемы, возникающие в настоящее время при использовании типичных типов окружения.

  • 0
    Спасибо! Это полезно, но я не вижу проблемы GitHub, обсуждающей @types npm org. Является ли @types org специально для UMD /// <reference сценарий? Будет ли компилятор TypeScript автоматически искать типы в node_modules/@types (как он ищет модули в node_modules когда 'moduleResolution': 'node' )? Что это значит для typings - он также обрабатывает внешние зависимости. Это как-то связано?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню