Integração de Typescript com Express
Um exemplo prático de integração TypeScript com Express é a criação de uma pequena API REST usando tipagem forte, modularização e validação de tipos. Abaixo está um passo a passo resumido de um projeto típico, incluindo as principais dependências e a estrutura dos arquivos.
Instalação e Configuração
Crie a pasta do projeto e inicialize o Node:
mkdir minha-api-ts
cd minha-api-ts npm init -y
Instale as dependências principais:
npm install express
npm install --save-dev typescript @types/node @types/express ts-node-dev
Crie um ficheiro de configuração TypeScript:
npx tsc --init
No tsconfig.json, ajuste:
{
"compilerOptions":
{
"target": "ES6",
"module": "commonjs",
"outDir": "./dist",
"rootDir": "./src",
"strict": true,
"esModuleInterop": true }
}
- Estruture as pastas:
src/para o código TypeScriptdist/para o código JavaScript gerado
Exemplo de Código
Crie o ficheiro src/server.ts:
import express, { Request, Response } from 'express';
const app = express();
app.use(express.json());
interface Utilizador {
id: number;
nome: string;
email: string;
}
let utilizadores: Utilizador[] = [];
app.get('/utilizadores', (req: Request, res: Response) => {
res.json(utilizadores);
});
app.post('/utilizadores', (req: Request, res: Response) => {
const novoUtilizador: Utilizador = req.body;
utilizadores.push(novoUtilizador);
res.status(201).json(novoUtilizador);
});
const PORT = 3000;
app.listen(PORT, () => {
console.log(`Server running on port ${PORT}`);
});
Execução
Adicione ao package.json para rodar o projeto em desenvolvimento:
"scripts": { "dev": "ts-node-dev --respawn src/server.ts" }
Execute: npm run dev
Aceda a http://localhost:3000/utilizadores no seu navegador ou via ferramenta API.
Benefícios e Práticas Recomendadas
- Use interfaces para definir a estrutura dos objetos e garantir tipagem estática.
- Organize o código em módulos para facilidade de manutenção.
- Aproveite recursos do TypeScript como classes e herança, se necessário.
Notas sobre os módulos instalados
A instrução npm install --save-dev typescript @types/node @types/express ts-node-dev serve para configurar um ambiente de desenvolvimento Node.js com TypeScript e algumas ferramentas de produtividade específicas para projetos TypeScript. Cada módulo tem uma função específica:
Explicação dos Módulos Instalados
typescript
- É o compilador principal de TypeScript para JavaScript.
- Necessário para transcrever arquivos
.tspara.jse garantir verificações de tipos durante o desenvolvimento.
@types/node e @types/express
- São pacotes de definições de tipos (type definitions).
@types/nodeadiciona ao TypeScript informações sobre todas as APIs nativas do Node.js (como fs, path, http), permitindo autocomplete, checagem de tipos e code completion específicos do Node.js.@types/expressfaz o mesmo para o framework Express, trazendo descrições de tipos para rotas, métodos, objetos de requisição/resposta, etc., fundamentais para programar barras APIs com Express em TypeScript.
Esses pacotes geralmente acompanham qualquer biblioteca JavaScript popular que não inclua tipos próprios; se não vierem embutidos, o padrão é instalar @types/nome-do-pacote.
ts-node-dev
- É uma ferramenta que permite executar arquivos TypeScript diretamente, sem compilar manualmente para JavaScript antes.
- Faz o hot reload: observa mudanças no código fonte e reinicia o servidor automaticamente, facilitando o desenvolvimento. É voltada apenas para ambiente de desenvolvimento, assim como as definições de tipos.
Resumindo
- @types/node: Tipos das APIs do Node.js para TypeScript.
- @types/express: Tipos do framework Express para TypeScript.
- ts-node-dev: Executa e reinicia aplicações TypeScript automaticamente em ambiente dev, sem precisar compilar manualmente.
- Estes pacotes ficam em
devDependencies(--save-dev) porque só são necessários durante o desenvolvimento, não em produção.
