Инструменты пользователя

Инструменты сайта


typescript:types:union

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

typescript/types/union.txt · Последние изменения: 2023/01/29 20:04 — werwolf