TypeScript 1.4 дает программам возможность комбинировать один или два типа. Типы объединения являются мощным способом выражения значения, которое может быть одним из нескольких типов. Два или более типа данных объединяются с использованием символа канала (|) для обозначения типа объединения. Другими словами, тип объединения записывается в виде последовательности типов, разделенных вертикальными чертами.
Синтаксис: союз буквальный
Type1|Type2|Type3
Пример: переменная типа объединения
var val:string|number val = 12 console.log("numeric value of val "+val) val = "This is a string" console.log("string value of val "+val)
В приведенном выше примере тип переменной — объединение. Это означает, что переменная может содержать либо число, либо строку в качестве значения.
При компиляции он сгенерирует следующий код JavaScript.
//Generated by typescript 1.8.10 var val; val = 12; console.log("numeric value of val " + val); val = "This is a string"; console.log("string value of val " + val);
Его вывод выглядит следующим образом —
numeric value of val 12 string value of val this is a string
Пример: тип соединения и функциональный параметр
function disp(name:string|string[]) { if(typeof name == "string") { console.log(name) } else { var i; for(i = 0;i<name.length;i++) { console.log(name[i]) } } } disp("mark") console.log("Printing names array....") disp(["Mark","Tom","Mary","John"])
Функция disp () может принимать аргумент типа string или массива строк.
При компиляции он сгенерирует следующий код JavaScript.
//Generated by typescript 1.8.10 function disp(name) { if (typeof name == "string") { console.log(name); } else { var i; for (i = 0; i < name.length; i++) { console.log(name[i]); } } } disp("mark"); console.log("Printing names array...."); disp(["Mark", "Tom", "Mary", "John"]);
Выход выглядит следующим образом —
Mark Printing names array…. Mark Tom Mary John
Тип объединения и массивы
Типы объединения также могут применяться к массивам, свойствам и интерфейсам. Ниже показано использование типа объединения с массивом.
Пример: тип объединения и массив
var arr:number[]|string[]; var i:number; arr = [1,2,4] console.log("**numeric array**") for(i = 0;i<arr.length;i++) { console.log(arr[i]) } arr = ["Mumbai","Pune","Delhi"] console.log("**string array**") for(i = 0;i<arr.length;i++) { console.log(arr[i]) }
Программа объявляет массив. Массив может представлять собой либо числовую коллекцию, либо коллекцию строк.
При компиляции он сгенерирует следующий код JavaScript.
//Generated by typescript 1.8.10 var arr; var i; arr = [1, 2, 4]; console.log("**numeric array**"); for (i = 0; i < arr.length; i++) { console.log(arr[i]); } arr = ["Mumbai", "Pune", "Delhi"]; console.log("**string array**"); for (i = 0; i < arr.length; i++) { console.log(arr[i]); }
Его вывод выглядит следующим образом —