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

Relaterte artikler