Búsqueda de sitios web

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

Artículos relacionados