O Construtor Protegido no TypeScript

Considere um exemplo de herança entre duas classes: a base classe Veiculo e a classe derivada Carro:
1class Veiculo {
2 constructor() {
3 }
4}
5
6class Carro extends Veiculo {
7 constructor() {
8 super();
9 }
10}Os construtores foram definidos em branco para focarmos no assunto de construtores protegidos.
Considere as seguintes expressoes:
let umVeiculo: Veiculo;
umVeiculo = new Carro();A variável umVeiculo é declarada com tipo Veiculo. Podemos atribuir um objeto do tipo Carro à essa variàvel porque um Carro é um Veiculo.
Agora vamos ver outra expressão:
let veiculo: Veiculo = new Veiculo();Nesse caso criamos um objeto usando a base classe Veiculo. Mas há situações em que não queremos permitir a instanciação de objetos do tipo da base classe. Isto é, só queremos permitir a construção de instância de objetos cuja classe é Carro, Moto, etc.
A maneira de resolver o problema é através da palavra chave protected. Basta adicionar à esquerda da assinatura do constructor da base classe:
1class Veiculo {
2 protected constructor() {
3 }
4}Agora, a seguinte expressão irá causar um erro:
let veiculo: Veiculo = new Veiculo();Constructor of class 'Veiculo' is protected
and only accessible within the class declaration.Com a adição de protected antes da assinatura do constructor(), não é mais possível criar objetos baseados diretamente na base classe Veiculo. Em vez disso, o usuário tem criar objetos a partir de classes derivadas de Veiculo. No caso acima, temos que usar new Carro().
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.