ts-morph para TypeScript: guia completo com exemplos

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Introdução ao ts-morph: o que é e para que serve

\n\n

ts-morph é uma biblioteca poderosa para trabalhar programaticamente com a Árvore Sintática Abstrata (AST) do TypeScript. Ela fornece uma API conveniente e intuitiva para análise, modificação e geração de código TypeScript. Ao contrário do uso direto do compilador TypeScript (TypeScript Compiler API), o ts-morph oferece uma interface de nível mais alto que simplifica significativamente muitas tarefas rotineiras.

\n\n

Para que serve esta biblioteca? Imagine que você precisa:

\n
    \n
  • Refatoração de código: Renomear automaticamente todas as ocorrências de uma função, alterar a assinatura de um método ou mover uma classe para outro arquivo.
  • \n
  • Análise estática: Encontrar todas as variáveis não utilizadas, verificar a conformidade com as regras de codificação corporativas ou coletar metadados sobre a estrutura do projeto.
  • \n
  • Geração de código: Criar tipos com base em um esquema JSON, gerar operações CRUD para um banco de dados ou adicionar documentação automaticamente.
  • \n
  • Criação de ferramentas de desenvolvimento: Escrever um plugin para linter, um gerador de documentação personalizado ou um utilitário para migração de código.
  • \n
\n\n

O ts-morph abstrai a complexidade do TypeScript Compiler API, fornecendo uma abordagem orientada a objetos. Você trabalha com projetos, arquivos, classes, funções e outros elementos de código como objetos comuns, em vez de nós AST de baixo nível.

\n\n

Instalação do ts-morph

\n\n

A instalação da biblioteca é feita via npm ou yarn. Ela está disponível como um pacote para Node.js.

\n\n
npm install ts-morph
\n\n

ou, se você usa yarn:

\n\n
yarn add ts-morph
\n\n

Após a instalação, você pode importar a biblioteca no seu projeto:

\n\n
import { Project } from 'ts-morph';
\n\n

Para funcionar, o ts-morph requer o TypeScript (indicado como peer dependency). Certifique-se de que o TypeScript está instalado no seu projeto:

\n\n
npm install typescript
\n\n

Início rápido com exemplo de código

\n\n

Vamos escrever um script simples que cria um novo arquivo TypeScript, adiciona uma função a ele e, em seguida, exibe o código gerado.

\n\n
import { Project, SyntaxKind } from 'ts-morph';\n\n// Cria um novo projeto\nconst project = new Project({\n    useInMemoryFileSystem: true, // Trabalha na memória, sem salvar no disco\n});\n\n// Cria um novo arquivo\nconst sourceFile = project.createSourceFile('example.ts', '');\n\n// Adiciona uma função\nconst functionDeclaration = sourceFile.addFunction({\n    name: 'greet',\n    parameters: [{ name: 'name', type: 'string' }],\n    returnType: 'string',\n    statements: [\n        `return \\`Hello, \\${name}!\\`;`,\n    ],\n});\n\n// Adiciona um comentário JSDoc\nfunctionDeclaration.addJsDoc({\n    description: 'Sauda o usuário',\n    tags: [{ tagName: 'param', text: 'name - Nome do usuário' }],\n});\n\n// Exibe o código gerado\nconsole.log(sourceFile.getText());\n
\n\n

Resultado da execução do script:

\n\n
/**\n * Sauda o usuário\n * @param name - Nome do usuário\n */\nfunction greet(name: string): string {\n    return `Hello, ${name}!`;\n}\n
\n\n

Como você pode ver, criamos programaticamente uma função completa com documentação JSDoc. Isso é apenas uma pequena parte das capacidades do ts-morph.

\n\n

Principais métodos e funções do ts-morph

\n\n

Vamos examinar 10 métodos-chave da biblioteca com descrição detalhada e exemplos.

\n\n

1. Project.createSourceFile()

\n

O que faz: Cria um novo arquivo fonte TypeScript no projeto. O arquivo pode estar vazio ou conter código inicial.

\n

Parâmetros:

\n
    \n
  • filePath: string — caminho para o arquivo (relativo à raiz do projeto).
  • \n
  • sourceText?: string — conteúdo inicial do arquivo (opcional).

Recommendations