В TypeScript для описания OR логики в интерфейсах можно использовать объединение типов с помощью оператора "|" (вертикальная черта).
При объединении типов с помощью оператора "|", данные могут соответствовать любому из указанных типов. Если данные соответствуют хотя бы одному из типов объединения, то они считаются валидными.
Допустим, у нас есть два интерфейса A
и B
:
interface A { propA: string; } interface B { propB: number; }
Чтобы задать OR логику, мы можем создать новый интерфейс, объединяющий A
и B
:
interface C { propA: string; propB: number; }
Теперь объект, имеющий свойства из интерфейса A
или B
будет соответствовать интерфейсу C
:
const obj1: C = { propA: "Hello", propB: 42 }; // валидно const obj2: C = { propA: "World", propB: 3.14 }; // валидно
Однако, объект, который не соответствует ни A
, ни B
не будет валидным:
const obj3: C = { propA: "Test" }; // ошибка: свойство "propB" отсутствует const obj4: C = { propB: 123 }; // ошибка: свойство "propA" отсутствует
Также, можно использовать объединение типов с помощью оператора &
(амперсанд), чтобы описать AND логику в интерфейсах. Это позволяет задавать типы, которые должны удовлетворять одновременно двум или более условиям.
В общем случае, объединение типов в TypeScript предоставляет мощный инструмент для задания различных логических условий в интерфейсах, позволяя определить гибкую структуру данных с точными требованиями.