Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Funcionando sem o cast explícito <HTMLInputElement>

O código abaixo está funcionando, não foi necessário incluir o cast explícito como sugerido na aula. Estou utilizando a versão mais atual do typescript (^3.4.5), será que foi alguma mudança na linguagem?

class NegociacaoController {
    private _inputData: HTMLInputElement;
    private _inputQuantidade: HTMLInputElement;
    private _inputValor: HTMLInputElement;

    constructor() {
        this._inputData = document.querySelector('#data');
        this._inputQuantidade = document.querySelector('#quantidade');
        this._inputValor = document.querySelector('#valor');
    }

// código omitido
}
3 respostas

Fala aí Rodolfo, tudo bem? Pode ser que tenham mudado alguma coisa e nas versões novas não são obrigados alguns casts desse tipo.

Isso porque você já tipou seu membro privado, então, fazer o cast novamente torna-se desnecessário.

Espero ter ajudado.

solução!

Boa noite, Rodolfo! Como vai?

Isso acontece pq com o passar das versões da linguagem ela foi modificada! No TypeScript 2.3.2 utilizado pelo mestre Flávio durante o curso o método querySelector() pertencia à classe NodeSelector e retornava um Element. Por isso, era necessário o cast como visto em aula.

Na versão mais atual o querySelector() pertence à uma classe chamada ParentNode que já faz o cast de acordo com o tipo da variável que está recebendo o retorno. Ou seja, como todos os atributos da sua classe já foram definidos como sendo do tipo HTMLInputElement, então por baixo dos panos o TypeScript já faz o cast pra esse tipo!

QUE MARAVILHA, HEIM MEU ALUNO!!

É isso! Qualquer coisa é só falar!

Grande abraço e bons estudos!

Alguma novidade Rodolfo? Conseguimos responder a sua dúvida?

Espero ter ajudado, bons estudos.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software