Sé que hay preguntas similares aquí, pero la mía es un poco diferente.
Hay una Interfaz que puede tener una u otra propiedad, llamémoslas en black y white , no son obligatorias, entonces la Interfaz es válida sin ellas y es válida con una de ellas.
Bueno:
interface MyInterface { name: string; }Bueno:
interface MyInterface { name: string; black?: boolean; }Bueno:
interface MyInterface { name: string; white?: boolean; } Malo: (o podría ser Bueno si podemos verificar que hay un máximo de black o white )
interface MyInterface { name: string; black?: boolean; white?: boolean; }Debido a que TypeScript tiene un tipo estructural , no es un error que un objeto tenga propiedades en exceso, a menos que lo rechace explícitamente configurando el tipo opcional de la propiedad en never , así:
type BlackOptional = { black?: boolean; white?: never; }; type WhiteOptional = { black?: never; white?: boolean; }; type Name = { name: string; } type Example = (Name & BlackOptional) | (Name & WhiteOptional); const example1: Example = { /* ^^^^^^^^ Types of property 'black' are incompatible. Type 'boolean' is not assignable to type 'never'.(2322) */ name: 'name', black: true, white: true, }; const example2: Example = { name: 'name', black: true, }; const example3: Example = { name: 'name', white: true, };