typescript
GitHub
  • README
  • Давайте Почнемо
    • Why TypeScript
  • JavaScript
    • Equality
    • References
    • Null vs. Undefined
    • this
    • Closure
    • Number
    • Truthy
  • Future JavaScript Now
    • Classes
      • Classes Emit
    • Arrow Functions
    • Rest Parameters
    • let
    • const
    • Destructuring
    • Spread Operator
    • for...of
    • Iterators
    • Template Strings
    • Promise
    • Generators
    • Async Await
  • Проект / Project
    • Контекст компіляції / Compilation Context
      • tsconfig.json
      • Які файли / Which Files?
    • Простори Оголошень / Declaration Spaces
    • Модулі / Modules
      • File Module Details
      • global.d.ts
    • Namespaces
    • Dynamic Import Expressions
  • Node.js QuickStart
  • Browser QuickStart
  • Library QuickStart
  • TypeScript's Type System
    • JS Migration Guide
    • @types
    • Ambient Declarations
      • Declaration Files
      • Variables
    • Interfaces
    • Enums
    • lib.d.ts
    • Functions
    • Callable
    • Type Assertion
    • Freshness
    • Type Guard
    • Literal Types
    • Readonly
    • Generics
    • Type Inference
    • Type Compatibility
    • Never Type
    • Discriminated Unions
    • Index Signatures
    • Moving Types
    • Exception Handling
    • Mixins
  • JSX
    • React
    • Non React JSX
  • Options
    • noImplicitAny
    • strictNullChecks
  • Errors in TypeScript
    • Interpreting Errors
    • Common Errors
  • NPM
  • Testing
    • Jest
    • Cypress
  • Tools
    • Prettier
    • Husky
    • ESLint
    • Changelog
  • TIPs
    • String Based Enums
    • Nominal Typing
    • Stateful Functions
    • Currying
    • Type Instantiation
    • Lazy Object Literal Initialization
    • Classes are Useful
    • Avoid Export Default
    • Limit Property Setters
    • outFile caution
    • JQuery tips
    • static constructors
    • singleton pattern
    • Function parameters
    • Build Toggles
    • Barrel
    • Create Arrays
    • Typesafe Event Emitter
  • StyleGuide
  • TypeScript Compiler Internals
    • Program
    • AST
      • TIP: Visit Children
      • TIP: SyntaxKind enum
      • Trivia
    • Scanner
    • Parser
      • Parser Functions
    • Binder
      • Binder Functions
      • Binder Declarations
      • Binder Container
      • Binder SymbolTable
      • Binder Error Reporting
    • Checker
      • Checker Diagnostics
      • Checker Error Reporting
    • Emitter
      • Emitter Functions
      • Emitter SourceMaps
    • Contributing
Powered by GitBook
On this page
Edit on GitHub

Library QuickStart

PreviousBrowser QuickStartNextTypeScript's Type System

Last updated 1 year ago

Користуватися модулями, написаними на 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 для перевірки типу.

Приклад пакета:

  • Використання: import { style } from 'typestyle'; буде повністю безпечним.

Managing Dependencies

devDependencies

  • Якщо ваш пакет залежить від іншого пакета під час його розробки (наприклад, prettier), ви повинні встановити їх як devDependency. Таким чином вони не забруднюватимуть node_modules споживачів вашого модуля (оскільки npm i foo не встановлює devDependencies foo).

  • 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

Якщо ваш пакунок обертае інший пакунок (призначений для внутрішнього використання навіть після компіляції), вам слід помістити їх у залежності. Тепер, коли хтось встановить ваш пакет, він отримає ваш пакет + будь-які його залежності.

npm install typestyle

Урок зі створення вузлових модулів TypeScript
для TypeStyle