===== Объединения union ===== Объединения или union не являются собственно типом данных, но они позволяют комбинировать или объединить другие типы. Так, с помощью объединений можно определить переменную, которая может хранить значение двух или более типов: let id : number | string; id = "1345dgg5"; console.log(id); // 1345dgg5 id = 234; console.log(id); // 234 Чтобы определить все типы, которые должно представлять переменная, все эти типы разделяются прямой чертой: ''number | string''. В данном случае переменная ''id'' может представлять как тип ''string'', то есть строку, так и число. Подобным образом можно использовать union для определения параметров функции: function printId(id: number|string){ console.log(`Id: ${id}`); } Здесь функция ''printId()'' в качестве параметра id может принимать как значения типа ''number'', так и значения типа ''string''. function printId(id: number|string){ console.log(`Id: ${id}`); } let id: string|number = "ruy74"; printId("1h2e3l4o5"); printId(9876); printId(id); Тип union подходит для тех ситуаций, когда логика работы со всеми объединенными типами однообразна, например, как в случае выше, где значение извне встраивается в строку и выводится на консоли. Вне зависимости от типа действия одинаковы. Однако иногда логика может различаться в зависимости от переданного типа. В этом случае можно использовать проверку на тип, чтобы разграничить логику для различных типов: function printSentence(words: string[]|string){ // если words - строка if (typeof words === "string") { console.log(words); } else { // Если words - массив string[] console.log(words.join(" ")); } } printSentence(["Язык", "программирования", "TypeScript"]); printSentence("Язык программирования JavaScript"); В данном случае функция ''printSentence()'' может принимать как строку, так и массив строк, чтобы затем вывести строки на консоль. И в зависимости от типа данных действия отличаются. Так, для массива применяется метод ''words.join(" ")'', который объединяет все элементы массива в одну строку, разделенные пробелом.