1
resposta

Typescript function overload

Olá novamente professor. Buscando, identifiquei uma recomendação para utilização de overload e não generics. Encontrei o código a seguir e o link https://www.typescriptlang.org/docs/handbook/advanced-types.html#user-defined-type-guards que me ajudaram um pouco, mas não entendi a situação de public signatures e private signatures. No exemplo abaixo, eu preciso da terceira função? Ou poderia retornar o valor desejado diretamente em uma das primeiras? Obrigado pela atenção

// Public signatures, we tie function parameter values to return value for specific types
function createInstance(type: "Lion"): Lion 
function createInstance(type: "Tiger"): Tiger 
// Private signature, not visible from outside
function createInstance(type: "Lion" | "Tiger"): Animal {
    if(type === "Lion") {
        return new Lion();
    }
    else if(type === "Tiger") {
        return new Tiger(); 
    }
}
let tiger = createInstance("Tiger"); // will be typed as Tiger
let lion = createInstance("Lion");// will be typed as Lion
let err = createInstance("Lama");// will be an error since the function does not know how to create
1 resposta

Pelo o que eu entendi é para você tentar resolver o problema desse post

https://cursos.alura.com.br/forum/topico-genericos-com-typescript-65678

Porém, a questão é de design e não da linguagem TypeScript como coloquei lá.