typescript - estrechamiento de tipo para el tipo de retorno condicionado a un parámetro nulo
Me gustaría que mi función devolviera null si cierto parámetro es null. Creo que el tipo de retorno correcto condicionado al parámetro es null extends typeof param ? null : string. Sin embargo, cuando devuelvo null condicionado a que el parámetro sea null, TS no está contento conmigo:
export const foo1 = (param: string | null): null extends typeof param ? null : string => {
if(typeof param === null) {
return null
}
// error: Type '""' is not assignable to type 'null'.(2322)
return "";
}
¿Con qué debería comparar param cuando devuelvo null para que TS esté contento cuando de otro modo devuelvo un string?
Campo de Juegos TS
Respuesta #1
No creo que usar cualquier tipo de retorno condicional sea TypeScript válido a menos que lo especifiques, pero si es así, no puedo imaginar que sea una buena práctica a menos que tengas un escenario muy específico donde sea necesario.
Puedes cambiar null extends typeof param ? null : string a string | null en su lugar. Esto te permitirá devolver null o string como quieras.
export const foo1 = (id: string | null): string | null => {
if(typeof id === null) {
return null
}
return "";
}
