В чем разница между Union и Intersection в TypeScript

«В чем разница между Union и Intersection в TypeScript» — вопрос из категории TypeScript, который задают на 10% собеседований Frontend Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Union (|) объединяет типы, позволяя переменной быть одним из указанных типов. Например, string | number означает, что значение может быть либо строкой, либо числом.

Intersection (&) комбинирует типы, создавая новый тип, который включает все свойства из каждого типа. Например, { name: string } & { age: number } создаст тип { name: string; age: number }.

Пример:

type A = { a: number };
type B = { b: string };

// Union: может быть либо A, либо B
let union: A | B = { a: 1 }; // OK
union = { b: 'test' }; // OK

// Intersection: должен содержать и A, и B
let intersection: A & B = { a: 1, b: 'test' }; // OK