As opções do tsconfig que importam, agrupadas por função: apertar a verificação de tipos, definir o alvo da linguagem e os módulos, controlar a emissão, mapear caminhos de importação, estruturar builds multi-projeto e afinar as verificações restantes.
Um tsconfig diz ao compilador que ficheiros incluir e quão estrito ser. Duas opções fazem a maior parte do trabalho: target define o nível de geração de JavaScript e strict liga as verificações de segurança em bloco. As opções abaixo são as que mudam o comportamento; as ativas por omissão estão anotadas. Derive a sua configuração de uma base e sobreponha apenas o que difere.
Tabela de referência · 55 entradas
Opções do tsconfigExplained
55 of 55 rows
Estriteza
Interruptor mestre: ativa strictNullChecks, noImplicitAny e vários outros de uma vez.
Erro em parâmetros e variáveis cujo tipo não pode ser inferido (seria caso contrário any).
null e undefined deixam de ser atribuíveis a qualquer tipo; opta-se explicitamente.
Verifica parâmetros de função contravariantemente; apanha tipos de parâmetros de callback insalubres.
Verifica bind, call e apply face aos parâmetros declarados da função.
Erro quando uma propriedade de classe não tem valor inicial nem é atribuída no construtor.
Uma propriedade opcional { p?: T } deixa de aceitar atribuição explícita de undefined.
Exige a palavra-chave override em membros que sombreiam um membro da classe base.
Erro em variáveis locais declaradas e nunca lidas.
Erro em parâmetros de função declarados e nunca lidos.
Erro em instruções de expressão sem efeito.
O acesso por ponto é proibido para chaves de assinatura de índice; use parênteses retos (obj["key"]).
Erro quando um caminho de código devolve um valor e outro não.
Erro quando um case de switch passa ao seguinte sem break.
Linguagem e módulos
O nível de geração de JavaScript (p. ex. ES2022); alvos mais recentes emitem menos conversão para baixo.
As APIs incorporadas disponíveis (p. ex. ES2022, DOM, DOM.Iterable).
O sistema de módulos emitido (p. ex. ESNext, CommonJS, NodeNext).
As regras reais do Node: cada ficheiro escolhe CJS ou ESM pelo package.json mais próximo, e as importações relativas precisam de extensões de ficheiro.
Como os caminhos de importação são resolvidos (p. ex. bundler, node, nodenext).
Como um ficheiro conta como módulo: auto (pela presença de import/export), legacy ou force (sempre).
Permite importações default a partir de módulos CommonJS (predefinido em quase todas as configurações).
Permite importações default de módulos que só exportam valores com nome (apenas a nível de tipos).
As importações são emitidas exatamente como escritas; importações só de tipos têm de usar import type (TS 5).
Deixa as importações carregar ficheiros .json como valores tipados.
Inclui ficheiros .js como entrada da compilação.
Verifica também ficheiros .js, lendo os seus comentários JSDoc; implica allowJs.
Como o .tsx é compilado: react-jsx (runtime automático), react (React.createElement) ou preserve.
Restringe os pacotes @types incluídos automaticamente a esta lista; um array vazio não inclui nenhum.
Pastas pesquisadas por pacotes @types em vez de todas as node_modules/@types na árvore.
Garante que cada ficheiro pode ser transpilado isoladamente (exigido por bundlers e esbuild).
Emissão
Para onde o JavaScript compilado é escrito.
A raiz dos ficheiros-fonte; mantém estável a forma da árvore de saída.
Emite ficheiros .js.map para os depuradores mapearem de volta ao TypeScript.
Embebe o source map como comentário dentro do ficheiro .js em vez de um ficheiro .js.map.
Emite declarações de tipos .d.ts (necessário para bibliotecas).
Emite ficheiros .d.ts.map para os editores saltarem das declarações para o código-fonte TypeScript.
Emite apenas ficheiros .d.ts; o JavaScript fica a cargo de um bundler (requer declaration ou composite).
Reutiliza helpers como __rest de tslib em vez de os emitir em cada ficheiro.
Corrige for..of, spread e destructuring sobre iteráveis quando o alvo é anterior a ES2015.
Remove comentários do JavaScript emitido.
Apenas verifica tipos; não escreve ficheiros (usado quando um bundler faz a emissão).
Caminhos
Um diretório base para a resolução de módulos não relativos.
Mapeia prefixos de importação para localizações, p. ex. { "@/*": ["src/*"] }.
Trata várias pastas como uma raiz virtual única para resolução.
Estrutura do projeto
Marca um projeto como compilável para referências de projeto (ativa declaration, incremental).
Depende de outros projetos tsconfig para builds mais rápidos e isolados.
Guarda informação de build para saltar a verificação de ficheiros inalterados na próxima execução.
Outras verificações
Salta a verificação de tipos de ficheiros .d.ts por rapidez (predefinido true).
Erro em importações que divergem da capitalização real do ficheiro.
O acesso a arrays e índices devolve T | undefined, não T.
Os campos de classe são criados com Object.defineProperty em vez de simples atribuição (predefinido true para alvos ES2022+).
Ativa a sintaxe legada de decorators usada por frameworks mais antigas (pré-padrão).
Reporta nomes de tipos completos nas mensagens de erro em vez de os truncar.
Erro quando uma importação bare de efeito secundário (import "./x.css") não resolve para nada.
Permite caminhos de importação terminados em .ts (requer noEmit ou emitDeclarationOnly).