TypeScript 5.0: padrão de decoradores e parâmetros const de tipo
Utilize a nova proposta de decoradores e parâmetros genéricos const
TypeScript 5.0: padrão de decoradores e parâmetros const de tipo é uma aula grátis de TypeScript Academy no CoddyKit. Esta é a aula 1 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de TypeScript Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de TypeScript Academy inclui 4 aulas no total.
Visão geral do TypeScript 5.0
TypeScript 5.0 trouxe a proposta padronizada de decoradores TC39 (Estágio 3), parâmetros de tipos const, uma nova sintaxe de módulos literal e melhorias significativas de desempenho.
// TS 5.0 release: March 2023
// npm install typescript@5Decoradores do Estágio 3
TS 5.0 implementa a proposta oficial de decoradores TC39 do Estágio 3 — diferente dos decoradores experimentais legados. Não é mais necessário usar experimentalDecorators: true.
// New standard decorator — no experimentalDecorators flag needed
function logged(target: Function, ctx: ClassDecoratorContext) {
return class extends (target as any) {
constructor(...args: any[]) {
console.log("Creating", target.name);
super(...args);
}
};
}
@logged
class User { constructor(public name: string) {} }Objeto de contexto do decorador
Os novos decoradores recebem um objeto tipado ClassDecoratorContext ou MethodDecoratorContext com metadados sobre o elemento decorado.
function sealed(_: Function, ctx: ClassDecoratorContext) {
ctx.addInitializer(function(this: any) {
Object.seal(this);
});
}Decoradores de métodos no TS 5.0
Os decoradores de métodos recebem o método e um ClassMethodDecoratorContext, substituindo a assinatura antiga (target, key, descriptor).
function measure(_: Function, ctx: ClassMethodDecoratorContext) {
return function(this: any, ...args: any[]) {
const start = performance.now();
const result = (_.apply as any)(this, args);
console.log(ctx.name, performance.now() - start, "ms");
return result;
};
}Parâmetros de tipos const
const em um parâmetro de tipo faz TypeScript inferir tipos literais para os argumentos, em vez de ampliá-los para o tipo base.
function identity<const T>(val: T): T { return val; }
const a = identity("hello"); // type: "hello" (not string)
const b = identity([1, 2, 3]); // type: readonly [1, 2, 3]Genéricos const versus as const
Os parâmetros de tipos const aplicam automaticamente o efeito de estreitamento — quem chama não precisa adicionar as const em cada ponto de chamada.
// Without const param: callers need as const
function makeRoute<T extends string>(path: T) { return path; }
const r1 = makeRoute("/home" as const); // "/home"
// With const param: automatic
function makeRoute2<const T extends string>(path: T) { return path; }
const r2 = makeRoute2("/home"); // "/home" — no as const neededResolução de módulos pelo empacotador
TS 5.0 adicionou moduleResolution: "bundler" para projetos que usam Vite, esbuild ou empacotadores semelhantes, que cuidam da resolução de módulos por conta própria.
{
"compilerOptions": {
"module": "ESNext",
"moduleResolution": "bundler"
}
}verbatimModuleSyntax
verbatimModuleSyntax: true exige que as importações somente de tipos usem import type, evitando o vazamento de importações em tempo de execução.
// tsconfig.json
{ "compilerOptions": { "verbatimModuleSyntax": true } }
// Now this errors: must be import type
import { User } from "./types"; // Error if User is only a type
import type { User } from "./types"; // OKMelhorias de desempenho
TS 5.0 aprimorou o armazenamento em cache da instanciação de tipos e o desempenho do estreitamento, tornando os projetos grandes mais rápidos sem alterações no código.
# TS 5.0 compile benchmarks: ~10-15% faster on large projectsMigração dos decoradores legados
Os decoradores legados experimentalDecorators ainda funcionam, mas eventualmente serão descontinuados. Migre para os decoradores TC39 para garantir compatibilidade futura.
// Legacy: requires experimentalDecorators: true
@Component({ selector: "app-root" })
class AppComponent {}
// New TC39 decorator: no flag needed (but Angular/NestJS need updates)Recapitulação: TypeScript 5.0
TypeScript 5.0 trouxe decoradores padronizados pelo TC39, parâmetros de tipos const para inferência automática de literais, moduleResolution: "bundler", verbatimModuleSyntax e ganhos significativos de desempenho.
Verificação rápida
O que const em um parâmetro de tipo faz?
O que você aprendeu
TypeScript 5.0: os decoradores padrão do TC39 substituem os experimentais, os parâmetros de tipos const estreitam automaticamente os argumentos para tipos literais, moduleResolution: "bundler" oferece suporte a ferramentas modernas de compilação e verbatimModuleSyntax exige import type.
Perguntas Frequentes
A aula “TypeScript 5.0: padrão de decoradores e parâmetros const de tipo” é grátis?
Sim — o texto completo de “TypeScript 5.0: padrão de decoradores e parâmetros const de tipo” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de TypeScript Academy, atualize para CoddyKit PRO. O curso de TypeScript Academy inclui 4 aulas no total.
O que vou aprender em “TypeScript 5.0: padrão de decoradores e parâmetros const de tipo”?
Utilize a nova proposta de decoradores e parâmetros genéricos const Você pratica TypeScript Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar TypeScript Academy?
Nenhuma experiência prévia é necessária. TypeScript Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 1 de 4.
Quanto tempo leva a aula “TypeScript 5.0: padrão de decoradores e parâmetros const de tipo”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de TypeScript Academy?
Sim. Cada aula de TypeScript Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- TypeScript 5.0: padrão de decoradores e parâmetros const de tipo
- TypeScript 5.1–5.2: inferência aprimorada
- TypeScript 5.3–5.4: nova restrição de tipos e NoInfer
- TypeScript 5.5+: declarações isoladas e além