Pular para o conteúdo principal

Questão de Programação — Linguagens de programação — CESPE / CEBRASPE 2023

ProgramaçãoLinguagens de programação
Código
ce163367
Banca
CESPE / CEBRASPE
Órgão
TBG
Ano
2023
Nível
Superior
Cargo
Ênfase: Desenvolvimento de Software
Imagem associada para resolução da questãoEm relação ao código precedente, julgue o item seguinte.Considerando-se que o código apresentado é voltado para o Angular com Typescript, é correto afirmar que @Component é um método da classe de AppComponent.
  1. CCerto
  2. EErrado
Revelar gabarito e comentário

GabaritoE — Errado

Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.

Angular: decorators e classes

Gabarito: letra E (ERRADO). A afirmação está incorreta porque @Component não é um método da classe AppComponent, mas sim um decorator (decorador) — uma função que recebe um objeto de configuração e é aplicada à classe para transformá-la em um componente Angular. O decorator é uma característica do TypeScript, não um método da classe.

O Angular é um framework front-end baseado em componentes. Cada componente é uma classe TypeScript decorada com @Component, que fornece metadados como selector, template ou templateUrl, styles etc. O decorator é uma função que recebe um objeto de configuração e é aplicada à classe para transformá-la em um componente Angular. O decorator é uma característica do TypeScript, não um método da classe.

Na prática, quando você escreve:

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html'
})
export class AppComponent {}

O @Component é um decorator que "anota" a classe AppComponent. Ele não é um método da classe — métodos são funções definidas dentro do corpo da classe, como ngOnInit(), onClick(), etc. O decorator é aplicado sobre a classe, antes dela ser definida, e o Angular o utiliza para registrar o componente no framework.

A distinção é fundamental: decorators são funções que modificam ou anotam classes, métodos, propriedades ou parâmetros; métodos são funções que pertencem a uma classe e podem ser chamadas em instâncias dela. No caso do Angular, @Component é um decorator de classe, enquanto métodos seriam, por exemplo, ngOnInit(), ngOnDestroy(), ou qualquer função definida dentro da classe.

A banca explora exatamente essa confusão: o candidato que não domina o conceito de decorator pode pensar que @Component é um método da classe, quando na verdade é um recurso do TypeScript que o Angular usa para configurar componentes. Essa é uma pegadinha clássica em questões de Angular.

Guarde a fronteira: decorator ≠ método. O decorator é aplicado à classe (ou a membros dela) e fornece metadados; o método é uma função que a classe pode executar. É exatamente nessa distinção que a questão se resolve.

1Decorator (@Component)
Função que anota a classe
Fornece metadados (selector, template)
Recurso do TypeScript
2Método (ngOnInit, onClick)
Função dentro da classe
Chamado em instâncias
3@Component
Aplicado sobre a classe
Transforma em componente Angular
Angular: decorator × método
LEVELsoulevel.com.br
Angular: decorator × método: Decorator (@Component) (Função que anota a classe, Fornece metadados (selector, template), Recurso do TypeScript); Método (ngOnInit, onClick) (Função dentro da classe, Chamado em instâncias); @Component (Aplicado sobre a classe, Transforma em componente Angular)

Alternativa E — ❌ Errado ⟵ GABARITO

A afirmação está errada. @Component é um decorator do TypeScript, não um método da classe AppComponent. O decorator é uma função que recebe um objeto de configuração e é aplicada à classe para transformá-la em um componente Angular. O decorator é uma característica do TypeScript, não um método da classe.

PEGA ESSA DICA!

Para não errar em questões de Angular, lembre-se: @Component, @NgModule, @Injectable, @Directive, @Pipe são decorators — eles anotam classes e fornecem metadados ao framework. Métodos, por outro lado, são funções definidas dentro da classe, como ngOnInit(), ngOnDestroy(), onClick(). Se a alternativa disser que um decorator é um método, está errada.

Gabarito: letra E (ERRADO).

Link permanente: /questoes/ce163367