javascript - Typescript reconhece parâmetro de função condicional como tipo união
Estou tentando criar uma função com parâmetros condicionais. Onde, com base no primeiro parâmetro, o segundo parâmetro será alterado. Mas o TypeScript não está verificando o tipo correto automaticamente dentro de um bloco condicional. Como posso fazer isso?
Playground do Typescript
Aqui está meu código:
type User = {
name: string
}
type Animal = {
species: string
}
function get<T extends 'user' | 'animal'>(modelType: T, model: T extends 'user' ? User : Animal) {
if (modelType === 'user') {
model.name // Property 'name' does not exist on type 'User | Animal'.
} else {
model.species // Property 'species' does not exist on type 'User | Animal'.
}
}
Se verificar se o tipo é 'user', o TypeScript deve reconhecer que o modelo é User, de acordo com o tipo condicional