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
- Configure um projeto do Node.js
package.json
. Início rápido:npm init -y
- Adicione o TypeScript (
npm install typescript --save-dev
) - Adicione o
node.d.ts
(npm install @ types / node --save-dev
) - 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
.
- Adicione o
ts-node
, que usaremos para compilar ao vivo + executar no nó (npm install ts-node --save-dev
) - Adicionar
nodemon
que irá invocarts-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
.
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óriosrc
.
- contem
- Em seu arquivo
package.json
contem"main": "lib/index"
< Isso diz ao Node.js para carregarlib/index.js
"types": "lib/index"
< Isto diz ao TypeScript para carregarlib/index.d.ts
Exemplo de pacote:
npm install typestyle
para TypeStyle- 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
) emdevDependencies
. 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.
Esses módulos NPM funcionam muito bem com o browserify (usando o tsify) ou o webpack (usando o ts-loader).