Tengo una interfaz que parece
export interface Foo { data?: Foo; bar?: boolean; } En algunos casos, los datos se utilizan como foo.data.bar y en otros casos como foo.bar . Cuando uso la interfaz de arriba, veo:
Property 'bar' does not exist on type 'Foo | undefined'
Esto se siente un poco extraño, pero ¿cómo puedo ajustar esto para que data puedan tener los tipos de Foo?
El signo de interrogación indica que data podrían ser una instancia de Foo o podrían no estar undefined :
data?: Foo; El error que está viendo se debe a esto: si data no están undefined , no hay una propiedad de bar para acceder.
Si data siempre se completarán con una instancia de Foo , puede eliminar el ? , que resolverá este problema:
data: Foo; Alternativamente, puede usar el encadenamiento opcional al acceder a la bar :
const bar = foo.data?.bar; O bien, puede verificar si foo.data está definido:
if (foo.data) { const bar = foo.data.bar; }