0Pricing
TypeScript Academy · Aula

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@5

Decoradores 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 needed

Resoluçã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"; // OK

Melhorias 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 projects

Migraçã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

  1. TypeScript 5.0: padrão de decoradores e parâmetros const de tipo
  2. TypeScript 5.1–5.2: inferência aprimorada
  3. TypeScript 5.3–5.4: nova restrição de tipos e NoInfer
  4. TypeScript 5.5+: declarações isoladas e além
← Voltar para TypeScript Academy