Library QuickStart
Користуватися модулями, написаними на TypeScript, надзвичайно весело, оскільки ви отримуєте чудову безпеку під час компіляції та автозаповнення (по суті, виконувану документацію).
Модулі TypeScript можна використовувати як у браузері nodejs (як є) (з чимось на зразок webpack).
Створити високоякісний модуль TypeScript просто. Припустімо таку бажану структуру папок для вашого пакета:
package
├─ package.json
├─ tsconfig.json
├─ src
│ ├─ index.ts
│ ├─ foo.ts
│ └─ ...All your source files (Authored)
└─ lib
├─ index.d.ts.map
├─ index.d.ts
├─ index.js
├─ foo.d.ts.map
├─ foo.d.ts
├─ foo.js
└─ ... All your compiled files (Generated)src/index.ts: тут ви експортуєте все, що очікуєте, що буде спожито з вашого проекту. Наприклад,export { Foo } from './foo';. Експорт із цього файлу робить його доступним для споживання, коли хтось виконуєімпорт { /* Тут */ } із 'example';У вашому
tsconfig.jsonмають
compilerOptions:"outDir": "lib"+"declaration": true+"declarationMap" : true< Це створює.js(JavaScript).d.ts(декларації для TypeSafety) і.d.ts.map(вмикаєdeclaration .d.ts=>source .tsнавігації IDE) у папці lib.мають
include: ["src"]< Це включає всі файли з каталогуsrc.
У вашому
package.jsonє"main": "lib/index"< Це вказує завантажитиlib/index.jsдля коду виконання."types": "lib/index"< Це повідомляє TypeScript завантажитиlib/index.d.tsдля перевірки типу.
Приклад пакета:
npm install typestyleдля TypeStyleВикористання:
import { style } from 'typestyle';буде повністю безпечним.
Managing Dependencies
devDependencies
Якщо ваш пакет залежить від іншого пакета під час його розробки (наприклад,
prettier), ви повинні встановити їх якdevDependency. Таким чином вони не забруднюватимутьnode_modulesспоживачів вашого модуля (оскількиnpm i fooне встановлюєdevDependenciesfoo).typescriptзазвичай єdevDependency, оскільки ви використовуєте його лише для створення свого пакета. Споживачі можуть використовувати ваш пакет із або без TypeScript.Якщо ваш пакет залежить від інших пакетів, створених JavaScript, і ви хочете використовувати його з безпекою типів у своєму проекті, розмістіть їхні типи (наприклад,
@types/foo) уdevDependencies. Типами JavaScript слід керувати out of bound з основних потоків NPM. Екосистема JavaScript надто часто порушує типи без семантичного керування версіями, тому, якщо вашим користувачам потрібні типи для них, вони повинні встановити версію @types/foo, яка їм підходить. Якщо ви хочете, щоб користувачі встановили ці типи, ви можете розмістити їх уpeerDependencies, згаданих далі.
peerDependencies
Якщо ваш пакет залежить від пакета, з яким він works with (на відміну від works using), наприклад. react, помістіть їх у peerDependencies так само, як і з необробленими пакетами JS. Щоб перевірити їх локально, ви також повинні помістити їх у devDependencies.
Тепер:
Коли ви розробляєте пакет, ви отримаєте версію залежності, яку ви вказали у своїх
devDependencies.Коли хтось встановлює ваш пакет, він not отримає цю залежність (оскільки
npm i fooне встановлюєdevDependenciesзfoo), але вони отримають попередження про те, що їм слід встановити відсутніpeerDependenciesвашого пакета .
dependencies
Якщо ваш пакунок обертае інший пакунок (призначений для внутрішнього використання навіть після компіляції), вам слід помістити їх у залежності. Тепер, коли хтось встановить ваш пакет, він отримає ваш пакет + будь-які його залежності.
Last updated