Типізація TypeScript в пакетах npm @types org


135

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

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

Чи призначено це використовувати окремо від інструменту типізації? Наприклад, встановлений безпосередньо з npm?


11
Дякую за це запитання.
Леон Пелтьє

Відповіді:


109

Як і в TypeScript 2.0, типізація більше не потрібна. Організація npm - це організація для створення команди розробників. Я вважаю, що Microsoft налаштував організацію @types у npm та додав до неї команду розробників TypeScript. Пакети в організації під назвою @types публікуються автоматично з Defin определенTyped, використовуючи інструмент видавців типів згідно з документами .

Крім того, 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, але з префіксом @ type /, але якщо вам потрібно, ви можете перевірити https://aka.ms/types, щоб знайти пакет для вашої улюбленої бібліотеки.

Від - http://www.typescriptlang.org/docs/handbook/declaration-files/consumption.html

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


Чудова відповідь! Невеликі редагування було б непогано, але це набагато краща робота щодо пояснення поточного стану.
Рональд Заріць

Оскільки ви вказали один файл у своєму package.json під typesвласністю, я помітив , що ви говорите про комплектном файлі декларація . Який був би найпростіший спосіб досягти цього в автоматизованій системі побудови, як gulp?
Нікі

Чи потрібно додати "main"поле, якщо головне називається index.js?
Кну

1
Велике спасибі за це "Зауважте, що "typings"поле є синонімом "types"та може бути використане також"
Сергій Попов

42

Оголошення в блозі TypeScript відповідає на це: Майбутнє файлів декларації

Підсумок:

Організація @typesnpm призначена для отримання визначень типів за допомогоюnpm . Використання цих типів визначень є функцією, що надходить у TypeScript 2.0.

Це замінить поточні проекти / інструменти, такі як типізація та 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.0beta TS
Марк Пешак - Trilon.io

по крайней мере , для деяких проектів команди ми оновлюємо (а також в інших проектах GH ми бачили), слід також оновити tsconfig.jsonз "types"властивістю масиву перераховуючи ці імена модулів, наприклад"types": ["core-js"]
superjos

7

Це буде функцією, яка розгорнута в Typescript 2.0. Це забезпечує підтримку типу модулів / бібліотек UMD та їх відповідних визначень.

Див. Розділ ( Вбудована підтримка визначень модулів UMD ) для кращого розуміння проблем, які зараз існують із зовнішнім типізацією.


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