1
resposta

constructor

tenho a mesma duvida em quase todos os videos, no constructor quando é injetada uma instância por que deve ser "private"? eu testei mudando para public e não deu erro, mas se não colocar nada aparece o erro Property 'x' does not exist on type 'y'.ts(2339). queria entender o motivo...

1 resposta

Fala ai Vinicius, tudo bem? A gente coloca private para que apenas a própria classe tenha acesso à essas instâncias, ou seja, ela não seja pública.

Tanto public como private são modificadores de acesso.

Quando você não coloca nada, o TypeScript vai apenas definir o parâmetro como um parâmetro.

Quando você define um modificador de acesso em algum parâmetro no seu construtor, o TypeScript vai criar get e set para esse parâmetro e atribuílo como atributo da classe (é um atalho), exemplo:

// sem atalho
class Person {
    private name: string

    constructor(name: string) {
        this.name = name
    }
}

// atalho
class Person {
    constructor(private name: string) {}
}

Espero ter ajudado.