1
resposta

Generics em TypeScript

Bom dia, pessoal. Segue minha dúvida.

export class View<T> {

    protected elemento: HTMLElement;

    constructor(seletor: string) {
        this.elemento = document.querySelector(seletor);
    }

    template(model: T): string{
        throw new Error('A classe filha precisa implementar seu próprio método template.')
    }

    update(model: T): void {
        console.log("teste");
        const template = this.template(model);
        this.elemento.innerHTML = template;

    }

}
import { View } from "./View.js";

export class MensagemView extends View<string>{


    template(model:string): string {
        return `
            <p>${model}</p>
        `
    }

}

Então, a classe View usa o generics, o T é usado para definir o que os métodos irão receber. Ok. Daí, na classe MensagemView, o generics é usado para definir, também, o que o método irá receber ... Isso faz sentido? Digo, o generics em MensagemView não deveria ser definido para o retorno do método? O que eu queria saber é qual o sentido/utilidade disso. Não estou dizendo que está errado sintaticamente.

1 resposta

Olá Flávio. No método View o generics não está especificando um tipo, apenas dizendo que deve receber essa tipagem. Já no MensagemView, estamos especificando que o tipo usado é string. O método template pode receber parâmentros diferentes, como string ou Negociacoes, mas em ambos os casos ele retornará uma string que será inserida no innerText dentro do update.

Espero ter ajudado.