Um momento
Aula 37
Cursos / Aprenda TypeScript - Tutorial Básico Vindo do JavaScript
Como Adicionar Atributos a uma Classe Derivada no TypeScript (super)

Summary

Aula de TypeScript - Adicionando Propriedades

Nesta aula, vamos aprender como adicionar uma nova propriedade à classe Funcionário, que será o salário, derivando da classe Indivíduo. A seguir, estão os principais pontos abordados:

Estrutura das Classes

  • A classe Funcionário estende a classe Indivíduo, compartilhando seu código através da herança.
  • Um Funcionário possui uma propriedade adicional: o salário.

Adicionando a Propriedade Salary

  1. Definição da Propriedade:

    • A nova propriedade em Funcionário será um atributo do tipo number, chamado salário.
    • Será definidos como private para controlar o acesso à variável.
  2. Construtor:

    • Para inicializar o salário, criamos um construtor na classe Funcionário.
    • Utilizamos a palavra-chave super para chamar o construtor da classe base Indivíduo, passando o nome do indivíduo.
  3. Implementação do Construtor:

    constructor(nome: string, salario: number) {
        super(nome); // Chama o construtor da classe base
        this.salario = salario; // Inicializa o salário
    }
    

Saída e Uso da Classe Funcionário

  • Um exemplo de uso da classe Funcionário é mostrado:
    const funcionario = new Funcionario('Marta', 123456);
    console.log(funcionario.cumprimentar());
    

Override de Metódos

  • Também modificamos o método cumprimentar na classe Funcionário:
    • Agora imprime o nome e o salário do funcionário, usando a interpolação de strings.

Compilação e Execução

  • A validação e teste da implementação são feitas compilando o TypeScript (tsc) e rodando o arquivo JavaScript resultante.

Conclusão

  • Aprendemos a usar a palavra-chave super, como definir um construtor na classe derivada e como adicionar novas propriedades.
  • A aula finalizou com a execução bem-sucedida do código, mostrando a saída esperada.

Até a próxima aula!

Video Transcript

Estamos de volta com mais uma aula de TypeScript. Vamos aprender a adicionar uma propriedade ao funcionário, nesse caso vai ser o salário do funcionário. Essa vai ser uma propriedade adicional. O indivíduo, por si próprio, não tem um salário, mas o funcionário que estende, que deriva de indivíduo, tem um salário. Para poder adicionar essa propriedade, nós vamos definir um construtor, constructor, na classe funcionário e vamos aprender a palavra-chave super para poder chamar o construtor da base-classe. Tá certo? Então vamos começar. Olhando aqui no lado esquerdo da minha tela, tem o arquivo indivíduo.ts que contém a declaração da classe indivíduo. No lado direito da tela é o arquivo funcionário.ts que tem a declaração da classe funcionário. Funcionário é uma classe que deriva da classe indivíduo porque a gente escreveu o funcionário extends indivíduo. Isto é, o código do indivíduo vai ser compartilhado pela classe funcionário. Isto é, tem uma herança. O funcionário vai ardá-lo indivíduo, o construtor, a função de comprimentar e o guera para obter o nome do indivíduo. Acho que o funcionário é um indivíduo. Agora vamos fazer o seguinte, vamos adicionar uma nova propriedade ao funcionário exclusiva ao funcionário que é o salário. O indivíduo, por si próprio, não vai ter salário, mas o funcionário vai ter. Então como fazer isso? Bem, vamos fazer da maneira sem ser curta, que a gente aprendeu a fazer maneira curta que o construtor do indivíduo, vamos fazer da maneira normal aqui. Então vamos adicionar a propriedade, um atributo a essa classe, como é que faz? Então o atributo vai ser o salário, vou dizer o nome salário. Qual é o tipo desse atributo aqui? A gente vai dar number, que é número, dessa maneira aqui. Agora normalmente nós definimos atributos de um classe como com acesso privado. Então vai ser público, mas normalmente a gente define privado, então vou adicionar a palavra chave private, antes aqui do nome da variável. Pronto, agora quando você fizer aqui, olha aqui no lado, aqui de embaixo da tela no lado direito, tem um arquivo sobre classe.task, que tem um exemplo de como usar o funcionário da linha 7 a 8, ele dá o new funcionário, passa o nome, não tinha que ter o nome do indivíduo, mas agora também vai ter salário, então a gente vai ter que modificar esse construtor aqui que veio do indivíduo. Bem, funcionário estende, é erda do indivíduo, mas nós não podemos modificar o construtor do indivíduo, porque o indivíduo não tem salário, então a gente vai ter que arrumar o jeito de a gente reutilizar esse construtor do indivíduo da nossa classe que funcionara. A maneira de fazer isso é a gente pode usar a palavra chave super para poder chamar a função da base classe, nesse caso a fusão vai ser o construtor, então a gente vai fazer o seguinte, nós vamos criar um construtor para o funcionário e esse construtor por si próprio vai chamar o construtor do indivíduo para poder iniciar o nome, depois disso é que a gente vai iniciar o salário desse próprio funcionário. Então vamos aqui, vamos dar constructor, vou só definir a função sem nenhum acesso, sem nada, então quando você define a função que tem o mesmo nome a função da base classe, esse aqui vai dar o override, e em vez de chamar o construtor da base classe vai chamar esse aqui, essa função aqui. Agora, como a gente está chamando a base classe indivíduo, precisa de um nome, então qual é o nome do indivíduo? O nome vai vir de argumento aqui, então vai ser o nome do indivíduo como o string. Agora, construtor do indivíduo precisa chamar para poder iniciar o nome do indivíduo, então você tem que usar super, ponto, tá super sem nada, sem ponto, desculpa, super dessa maneira e você passa aqui o argumento que o construtor do indivíduo da base classe que ele precisa, nesse caso requer o nome, então o nome aqui, passado ao construtor do funcionário, vai passar para o construtor do indivíduo aqui. Depois de fazer isso, o que vai acontecer? O des, ponto, nome vai ser setado com o nome do funcionário, depois disso aqui a gente vai fazer setar o salário, des, ponto salário do próprio funcionário vai ser o salário que você vai passar aqui como novo argumento do construtor, então vou chamar o salário do tipo number e vou pôr aqui embaixo, o salário. Então o segundo argumento aqui que a gente vai adicionar na linha 7 vai ser o salário, então da marca aqui vai adicionar o salário 1, 2, 3, 4, 5, 6, deixa eu aumentar até um pouquinho, então vai adicionar esse segundo argumento que é chamado da nova criação de nova instância do funcionário, isso vai ser passado ao construtor, o construtor agora tem dois argumentos do segundo sendo o salário, nesse caso 1, 2, 3, 4, 6 e esse o salário vai ser iniciado aqui no des, ponto salário da instância do funcionário. E nós usamos aqui o super, normalmente quando você tem uma classe que erra da base classe, no construtor a gente normalmente chama primeiro de tudo o super para poder iniciar o objeto com o construtor da base classe, se não tivesse essa parte ele não iniciaria o nome aqui e dá problema, normalmente sempre ponho o super aqui e se você usar o des até no construtor sem um super vai dar problema que ele não vai saber o que é, que as coisas estão definidas. Então se lembre quando você tem uma classe que erra de outra classe, no construtor que você dá o override aqui da classe derivada, normalmente ponha o super como a primeira coisa que você faz, antes de setar todas as propriedades adicionais da classe derivada. Por isso vamos testar o negócio aqui, legal. Agora antes de testar também o funcionário, como a gente pode ver se realmente tem um salário aqui, vamos ver aqui, fazer o seguinte, tem a função cumprimentar, vamos dar um override em vez de chamar a função cumprimentada da base classe, vai chamar a própria função cumprimentar do funcionário, então vou dizer cumprimentar e vou falar sou um funcionário, meu nome é, vou usar a backtake aqui, acento grave aqui para poder usar a interpolação de string, botar desse ponto nome, note que tem o underscore nome e como nome é protected você pode acessar diretamente da classe derivada, se fosse private que ia na classe base só poderia ter acesso da classe indivíduo, mas não na classe derivada então modificamos o private para protected aqui, meu nome é, meu salário é, vou botar o desse ponto salário, vou salvar aqui, a gente pode colocar aqui aqui, estamos com o acesso da função, e se quiser o retorno vai ser void, porque não retorna nada, então esse vai dar o override, mesmo a função da base, então em vez de chamar cumprimentada da base base vai chamar cumprimentada da classe funcionário, então vamos testar isso, linha 7 e 8, vou comentar linhas 45, a gente não quer ver isso agora, vou até comentar o import, não ele pode reclamar porque eu não estou usando a variável, o import do estudante, então eu comentei isso também, então a gente espera que ele inicie uma nova instância de um funcionário com o nome marta e salário 1.2.3.4.5.6, a gente chama cumprimentada que vai falar, eu sou um funcionário, meu nome é marta, meu salário é 1.2.3.4.5.6, vamos aqui no terminal, tsc para compilar, typescript compiler, vou dar o node dist, barra, sobreclasses é o nome do arquivo, ponto js, então deu certo como a gente esperava, sou um funcionário, meu nome é marta, meu salário 1.2.3.4.5.6, tá bom? Então aprendemos só para a palavra chave super, tá, para poder e definimos o construtor na classe derivada que adiciona novas propriedades, então por essa aula é só e até a próxima.
Nenhum comentário ainda (loading...)
Nenhum comentário ainda (loading...)
Gostou da aula? 😆👍
Apoie nosso trabalho com uma doação: