В TypeScript есть возможность объявлять переменную, которая может хранить в себе значения двух или нескольких типов данных.
Такая возможность называется - Объединение Типов (Union Type). Union Type - это тоже тип данных, но это - составной тип данных. То есть, это тип данных, который создается на основе комбинирования нескольких других типов данных.
Давайте рассмотрим пример:
let someVariable: string | string[];
someVariable = 'apple'; // => apple
someVariable = ['apple', 'tomato', 'mango']; // => ['apple', 'tomato', 'mango']
someVariable = 12; // => Type '12' is not assignable to type 'string | string[]'
Что мы сделали в коде выше? Мы объявили переменную someVariable и указали, что эта переменная может хранить в себе значения только двух типов - строка (string) или же массив строк (string[]).
Присвоив переменной строку или же массив строк, мы не получим ошибки компиляции, так как это удовлетворяет условию - string или string[].
Но если присвоим переменной число 12, то получим ошибку
Type '12' is not assignable to type 'string | string[]'
… так как тип number не объявлен в числе допустимых типов значений для переменной someVariable.