Typescript
  • Introducão
  • Primeiros Passos
    • Por que TypeScript
  • JavaScript
    • Igualdade
    • Referências
    • Null vs. Undefined
    • this
    • Closure
    • Number
    • Truthy
  • Futuro JavaScript Agora
    • 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
      • globals.d.ts
    • Namespaces
    • Dynamic Import Expressions
  • Node.js QuickStart
  • Browser 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
    • Changelog
  • TIPs
    • String Based Enums
    • Nominal Typing
    • Stateful Functions
    • Bind is Bad
    • 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
  • Bônus: Live compile + run
  • Criando módulos Node do TypeScript
  • Pontos bônus

Was this helpful?

Node.js QuickStart

O TypeScript tem suporte de primeira classe para o Node.js desde o início. Veja como configurar um projeto rápido do Node.js:

Nota: muitas dessas etapas são na verdade apenas práticas comuns de configuração do Node.js

  1. Configure um projeto do Node.js package.json. Início rápido: npm init -y

  2. Adicione o TypeScript (npm install typescript --save-dev)

  3. Adicione o node.d.ts (npm install @ types / node --save-dev)

  4. Inicie um tsconfig.json para opções do TypeScript com algumas opções-chave em seu tsconfig.json (npx tsc --init --rootDir src --outDir lib --esModuleInterop --resolveJsonModule --lib es6, dom --module commonjs`)

É isso aí! Abra seu IDE (por exemplo, code .) e divirta-se. Agora você pode usar todos os módulos de Node embutidos (por exemplo, import * as fs from 'fs';) com toda a segurança e ergonomia do desenvolvedor do TypeScript!

Todo o seu código TypeScript entra em src e o JavaScript gerado vai em lib.

Bônus: Live compile + run

  • Adicione o ts-node, que usaremos para compilar ao vivo + executar no nó (npm install ts-node --save-dev)

  • Adicionar nodemon que irá invocar ts-node sempre que um arquivo for alterado (npm install nodemon --save-dev)

Agora apenas adicione um alvo script ao seu package.json baseado na sua entrada de aplicativo, por exemplo assumindo seu index.ts:

  "scripts": {
    "start": "npm run build:live",
    "build": "tsc -p .",
    "build:live": "nodemon --watch 'src/**/*.ts' --exec 'ts-node' src/index.ts"
  },

Então você pode agora executar o npm start e editar oindex.ts:

  • nodemon executa novamente seu comando (ts-node)

  • ts-node transpila automaticamente pegando o tsconfig.json e a versão do TypeScript instalada,

  • O ts-node executa a saída JavaScript através do Node.js.

E quando você estiver pronto para implantar seu aplicativo JavaScript, execute npm run build.

Criando módulos Node do TypeScript

Usando módulos escritos em TypeScript é super divertido, pois você obtém segurança em tempo de compilação e um autocomplete (essencialmente, documentação executável).

Criar um módulo TypeScript de alta qualidade é simples. Assuma a seguinte estrutura de pastas desejada para o seu pacote:

package
├─ package.json
├─ tsconfig.json
├─ src
│  ├─ Todos os seus arquivos de origem
│  ├─ index.ts
│  ├─ foo.ts
│  └─ ...
└─ lib
  ├─ Todos os seus arquivos de origem
  ├─ index.d.ts
  ├─ index.js
  ├─ foo.d.ts
  ├─ foo.js
  └─ ...
  • Em seu arquivo tsconfig.json

    • contem compilerOptions: "outDir": "lib" e "declaration": true < Isso gera declaração e arquivos js na pasta lib

    • contem include: ["./src/**/*"] < Isso inclui todos os arquivos do diretório src.

  • Em seu arquivo package.json contem

    • "main": "lib/index" < Isso diz ao Node.js para carregar lib/index.js

    • "types": "lib/index" < Isto diz ao TypeScript para carregar lib/index.d.ts

Exemplo de pacote:

  • Usando: import { style } from 'typestyle'; será completamente seguro.

MAIS:

  • Se o seu pacote depende de outros pacotes criados por TypeScript, coloque-os em dependencies/devDependencies/peerDependencies como você faria com pacotes brutos do JS.

  • Se o seu pacote depender de outros pacotes criados por JavaScript e você quiser usá-lo com o tipo de segurança em seu projeto, coloque seus tipos (por exemplo @types/foo) em devDependencies. Os tipos JavaScript devem ser gerenciados fora do limite dos fluxos principais do NPM. O ecossistema JavaScript quebra tipos sem versionamento semântico muito comumente, então, se seus usuários precisarem de tipos para eles, eles devem instalar a versão @types/foo que funciona para eles.

Pontos bônus

Esses módulos NPM funcionam muito bem com o browserify (usando o tsify) ou o webpack (usando o ts-loader).

PreviousDynamic Import ExpressionsNextBrowser QuickStart

Last updated 6 years ago

Was this helpful?

npm install typestyle

Uma lição sobre a criação de módulos Node do TypeScript
para TypeStyle