javascript - Hvordan bruke en variabel som streng eller objekt i TypeScript?
Jeg har en variabel som enten kan være en streng eller et objekt som dette:
value?: string | { name: string, type: string }
Prøver noe nedenfor, men jeg får en kompilering feil:
console.log(value?.name || value)
console.log(value?.type)
Hvordan kan jeg bruke denne variabelen hvis den kan være av en hvilken som helst type?
Svar #1
I dette tilfellet kan du gjøre:
console.log(typeof value === 'string' ? value : value?.name)
Typescript kan snevre inn typen ved å bruke type-guards, se her for mer informasjon.
Svar #2
Så du har to alternativer
console.log(typeof value === 'string' ? value : value.name);
Men siden du brukte ?: i definisjonen for denne verdien (som tillater undefined) og siden jeg tror at konsollen bare er for et enkelt eksempel der
if (value === undefined) {
} else if (typeof value === 'string') {
} else {
}
Ville være best.
Dette problemet du fant skyldes mest fordi begge verdiene for value-variabelen er objekter, og ts så at typene ikke er kompatible og ber deg om å begrense dem manuelt
