typescript - Egenskap som kan vara null eller undefined vilket orsakar felet "existerar inte"


Jag försöker lista ut det korrekta sättet att destrukturera ett returnerat objekt.

Här är TypeScript-koden:

const id = 1;
const { film: { title, director } } = await getEvent({ id });

Jag får ett fel under både title och director: Property does not exist on type film. När jag hovrar över film visas typen:

(property) film?: {
    title?: string | null | undefined;
    director?: string | null | undefined;
    ... and 10 more ...;
} | undefined

Hur kan jag tala om för kompilatorn att dessa egenskaper faktiskt finns utan att ändra typen på title och director för att inte vara undefined/null/valfri?

Svar #1

Du kan göra TypeScript-kompilatorn nöjd genom att ange standardvärden:

const { film: { title = '', director = '' } = {} } = await getEvent({ id });

Svar #2

const film: { 
              title: string | null | undefined,
              director: string | null | undefined 
             } = await getEvent({ id });

Din variabel när den deklareras bör ha ett namn (film) och sedan följer typen av variabeln efter :

Relaterade artiklar