Fácil TypeScript
Classe Pessoa com parameter properties
Enunciado
Crie uma classe Pessoa que tenha uma propriedade nome (pública e readonly) e uma propriedade idade (privada). O construtor deve usar parameter properties para declarar e inicializar ambas. Adicione um método público apresentar() que imprime Olá, meu nome é [nome] e tenho [idade] anos..
Requisitos
- Usar parameter properties no construtor.
nomedeve serpublic readonly.idadedeve serprivate.- O método
apresentar()deve ser público e imprimir a frase exata.
Código inicial
// Crie a classe Pessoa aqui
Saída esperada
Olá, meu nome é Ana e tenho 30 anos.
Ver dica
No construtor, declare os parâmetros com public readonly nome: string e private idade: number. O corpo do construtor pode ficar vazio.
Mostrar solução
class Pessoa {
// Parameter properties: public readonly e private
constructor(
public readonly nome: string,
private idade: number
) {}
public apresentar(): void {
console.log(`Olá, meu nome é ${this.nome} e tenho ${this.idade} anos.`);
}
}
// Teste
const p = new Pessoa("Ana", 30);
p.apresentar();
Passo a passo
- Declaramos a classe
Pessoa. - No construtor, usamos
public readonly nome: string— isso cria automaticamente a propriedadenome, pública e somente leitura. - Usamos
private idade: number— cria a propriedadeidadeprivada, acessível apenas dentro da classe. - O corpo do construtor fica vazio porque as atribuições são feitas automaticamente pelas parameter properties.
- O método
apresentar()é público (padrão) e acessathis.nomeethis.idadepara montar a mensagem. - Instanciamos
Pessoae chamamosapresentar().
Por que funciona
Parameter properties economizam código: sem elas, teríamos que declarar os campos fora do construtor e atribuí-los manualmente. O readonly impede que nome seja alterado depois da construção, e private em idade garante que só a própria classe a manipule.
Erros comuns
- Esquecer o modificador no parâmetro:
constructor(nome: string, idade: number) {}— isso não cria propriedades;this.nomedará erro. - Tentar alterar
nomedepois:p.nome = "Bia"— erro de compilação porque éreadonly. - Acessar
p.idadefora da classe — erro de compilação porque éprivate.
Outra forma de resolver
Declarar os campos explicitamente e atribuir no construtor:
class Pessoa {
public readonly nome: string;
private idade: number;
constructor(nome: string, idade: number) {
this.nome = nome;
this.idade = idade;
}
// ...
}
Essa forma é preferível quando você precisa de lógica extra na atribuição.
Saída esperada
Olá, meu nome é Ana e tenho 30 anos.