glaucia86 / curso-typescript-zero-to-hero

Repositório responsável pelo Curso de TypeScript - Zero to Hero

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Duplicação na Compilação de TS para JS (es2017)

rnvdeveloper opened this issue · comments

Olá Gláucia! Espero que esteja tudo bem por ai.

Eu procurei informação a respeito dessas dúvidas, mas não consegui localizar nada que falasse a respeito. Não sei dizer se tem algum problema com meu compilador ou se esse seria um comportamento esperado.

Você poderia me ajudar a entender ou indicar alguma leitura que fale a respeito?

CasesCompilation

A mensagem de erro que você está vendo provavelmente se deve ao fato de você não ter definido a propriedade firstName na classe Person2. Embora você tenha passado firstName como um parâmetro para o construtor, na verdade você não definiu firstName como uma propriedade na classe.

Para corrigir esse erro, você deve adicionar uma propriedade firstName à classe Person2, assim:

class Person2 {
  constructor(private firstName: string, private lastName: string) {}
}

Essa maneira de definir propriedades na lista de parâmetros do construtor usando a palavra-chave private é uma sintaxe abreviada fornecida pelo TypeScript.

Quando você define um parâmetro de construtor com a palavra-chave private, o TypeScript gera automaticamente uma propriedade privada com o mesmo nome e tipo do parâmetro. A propriedade privada é então inicializada com o valor passado para o construtor.

No caso da classe Person2, os parâmetros do construtor firstName e lastName são definidos como propriedades privadas, o que significa que não podem ser acessados ou modificados de fora da classe.

Isso é útil para encapsular o estado interno do objeto e impedir a modificação não intencional de suas propriedades. Ele também permite que a classe forneça métodos para acessar e modificar suas propriedades de maneira controlada, como métodos getter e setter.

Ao usar essa sintaxe abreviada, você pode economizar tempo e reduzir o código clichê ao definir classes no TypeScript.

Esse artigo pode te ajudar mais na sua pesquisa: LINK