Объединения union

Последнее обновление: 15.05.2021

Объединения или 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(" "), который объединяет все элементы массива в одну строку, разделенные пробелом.

Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850