javascript - ¿Cómo usar una variable como cadena u objeto en TypeScript?
Tengo una variable que puede ser una cadena o un objeto como este:
value?: string | { name: string, type: string }
Probando algo a continuación pero obtengo un error de compilación:
console.log(value?.name || value)
console.log(value?.type)
¿Cómo puedo usar esta variable si puede ser de cualquiera de los tipos?
Respuesta #1
En este caso puedes hacer:
console.log(typeof value === 'string' ? value : value?.name)
Typescript puede reducir el tipo usando guardias de tipo, vea aquí para más detalles.
Respuesta #2
Así que tienes dos opciones
console.log(typeof value === 'string' ? value : value.name);
Pero como usaste ?: en la definición de este valor (permitiendo indefinido) y como creo que la consola es solo para un ejemplo simple allí
if (value === undefined) {
} else if (typeof value === 'string') {
} else {
}
Sería lo mejor.
Este problema que encontraste se debe principalmente a que ambos valores de la variable value son objetos y TypeScript vio que los tipos no son compatibles y te pide que los limites manualmente
