0Pricing
TypeScript Academy · Aula

Decoradores de parâmetros e metadados

Utilize decoradores de parâmetros com reflect-metadata

Decoradores de parâmetros e metadados é uma aula grátis de TypeScript Academy no CoddyKit. Esta é a aula 3 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.

Boas-vindas

Esta lição aborda decoradores de parâmetro e metadados no TypeScript.

Introdução

Decoradores são uma proposta de JavaScript de estágio 3 e um recurso experimental do TypeScript para adicionar metadados e modificar classes e seus membros.

Conceito central

Um decorador é uma função aplicada a uma classe, método, propriedade ou parâmetro usando a sintaxe @.
@sealed
class BugReport {
  type = 'report';
  title: string;
  constructor(t: string) { this.title = t; }
}

Decorador de classe

Decoradores de classe recebem a função construtora e podem retornar uma versão modificada.
function sealed(constructor: Function) {
  Object.seal(constructor);
  Object.seal(constructor.prototype);
}

Decorador de método

Decoradores de método recebem o alvo, o nome da propriedade e o descritor de propriedade.
function log(target: any, key: string, desc: PropertyDescriptor) {
  const orig = desc.value;
  desc.value = function(...args: any[]) {
    console.log('Calling', key);
    return orig.apply(this, args);
  };
}

Decorador de propriedade

Decoradores de propriedade recebem o alvo e a chave da propriedade. Eles não podem interceptar leituras e gravações diretamente.
function readonly(target: any, key: string) {
  Object.defineProperty(target, key, { writable: false });
}

Decorador de parâmetro

Decoradores de parâmetro recebem o alvo, o nome do método e o índice do parâmetro.
function required(target: any, key: string, index: number) {
  const meta = Reflect.getMetadata('required', target, key) || [];
  meta.push(index);
  Reflect.defineMetadata('required', meta, target, key);
}

Fábricas de decoradores

Uma fábrica de decoradores é uma função que retorna um decorador. Ela recebe parâmetros de configuração.
function role(name: string) {
  return function(target: any, key: string) {
    Reflect.defineMetadata('role', name, target, key);
  };
}

class UserController {
  @role('admin')
  deleteUser() {}
}

Decoradores do NestJS

O NestJS usa decoradores extensivamente para controladores, injeção de dependências e roteamento.
@Controller('users')
class UsersController {
  constructor(private usersService: UsersService) {}

  @Get()
  findAll(): User[] {
    return this.usersService.findAll();
  }
}

reflect-metadata

Os decoradores geralmente funcionam com o preenchimento compatível reflect-metadata para armazenar e recuperar metadados em tempo de execução.
import 'reflect-metadata';
// Enable in tsconfig: experimentalDecorators: true, emitDecoratorMetadata: true

Ordem dos decoradores

Vários decoradores na mesma declaração são aplicados de baixo para cima (o último escrito é avaliado primeiro).
@first
@second
class Example {}
// Applied: second first, then first

Verificação rápida

Qual configuração do TypeScript é necessária para usar decoradores?

Recapitulação

Os decoradores usam a sintaxe @ para modificar classes, métodos, propriedades e parâmetros. Eles são habilitados com experimentalDecorators no tsconfig e amplamente usados por estruturas como NestJS e Angular.

Perguntas Frequentes

A aula “Decoradores de parâmetros e metadados” é grátis?

Sim — o texto completo de “Decoradores de parâmetros e metadados” é 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 “Decoradores de parâmetros e metadados”?

Utilize decoradores de parâmetros com reflect-metadata 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 3 de 4.

Quanto tempo leva a aula “Decoradores de parâmetros e metadados”?

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. Decoradores de classes: encapsulando comportamento
  2. Decoradores de métodos e propriedades
  3. Decoradores de parâmetros e metadados
  4. Decoradores em frameworks: exemplo com NestJS
← Voltar para TypeScript Academy