Como Usar protected para Acessar Membros Privados de uma Base Classe no TypeScript

Em programação orientada à objetos, os atributos de um objeto são normalmente definidos com acesso privado para não serem lidos ou modificados diretamente. Em vez do acesso direto a propriedade, funções getter e setter são definidas para disponibilizar uma API de leitura e modificação, respectivamente.
Por exemplo, suponha que temos uma classe que representa um veículo:
1class Veiculo {
2 private marca: string;
3
4 constructor(aMarca: string) {
5 this.marca = aMarca;
6 }
7
8 obterMarca() {
9 return this.marca;
10 }
11
12 modificarMarca(novaMarca: string) {
13 this.marca = novaMarca;
14 }
15}Podemos criar um veículo da seguinte maneira:
let carro = new Veiculo("Honda");Mas o acesso e modificação da marca do veículo após sua construção não é permitida:
console.log(carro.marca);
carro.marca = "Toyota";O compilador mostra o seguinte erro para ambas as expressões:
Property 'marca' is private and only accessible within class 'Veiculo'.Vamos agora criar uma classe derivadas de um Veiculo: Carro. Veja o código abaixo:
1class Carro extends Veiculo {
2 imprimirMarca() {
3 console.log(this.marca);
4 }
5}A classe Carro herda o constructor da base classe Veiculo, então não precisamos defini-lo novamente.
O metodo imprimirMarca vai dar erro porque this.marca não é acessível da classe derivada, Carro. A marca é uma propriedade da base classe Veiculo, com acesso private:
Property 'marca' is private and only accessible within class 'Veiculo'.Para podermos ter acesso direto de uma propriedade da base classe na classe derivada, precisamos usar o modo de acesso protected:
1class Veiculo {
2 protected marca: string;
3
4 // ...
5}Agora, a chamada de imprimirMarca de um objeto da classe Carro irá funcionar sem problemas. O acesso à propriedade marca da superclasse Veiculo é permitido.
Para aprender mais sobre o TypeScript, assista às aulas do NBK Mundo Tech:
https://www.youtube.com/watch?v=jOJYBcjJ0CE&list=PLUbb2i4BuuzBcH1iS242xjztUwMI4erNb
Nos vemos lá!
Leia a seguir

O Que É a Linguagem de Programação Rust? Um Guia Simples da Linguagem Rápida Que Não Deixa Você Travar
Um guia simples e sem jargões sobre o Rust, a linguagem tão rápida quanto o C que impede famílias inteiras de erros de memória antes de o programa rodar. Entenda a ideia de posse, por que gigantes da tecnologia o adotam e onde ele é usado.

O Que É a Linguagem de Programação Go? Um Guia Simples da Linguagem da Nuvem
Um guia simples e sem jargões sobre o Go, a linguagem simples e rápida que o Google criou para a nuvem. Entenda o que são goroutines, por que um programa Go é um arquivo só e como o Go passou a mover o Docker, o Kubernetes e boa parte da internet.

O Que É a Linguagem de Programação Ruby? Um Guia Simples da Linguagem Feita para a Felicidade
Um guia simples e sem jargões sobre o Ruby, a linguagem de programação feita para deixar os programadores felizes. Entenda por que o código Ruby parece inglês, como o Ruby on Rails move sites como GitHub e Shopify, e onde o Ruby brilha.
Comentários
Seja gentil e específico. Comentários com links de contas novas aparecem depois da análise de um moderador.