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