TypeScript - Союз
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)
В приведенном выше примере тип переменной - union. Это означает, что переменная может содержать в качестве значения число или строку.
При компиляции он сгенерирует следующий код 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 () может принимать аргумент либо строку типа, либо массив строк.
При компиляции он сгенерирует следующий код 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]);
}
Его вывод выглядит следующим образом -
**numeric array**
1
2
4
**string array**
Mumbai
Pune
Delhi