目录
[示例:Union 类型和函数参数](#示例:Union 类型和函数参数)
TypeScript 1.4 使程序能够组合一种或两种类型。Union类型是表达可以是多种类型之一的值的强大方法。使用管道符号 (|) 组合两个或多个数据类型以表示Union类型。换句话说,Union类型被写为由竖线分隔的类型序列。
语法:Union文字
notranslate
Type1|Type2|Type3
示例:Union类型变量
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);
其输出如下 -
notranslate
numeric value of val 12
string value of val this is a string
示例:Union 类型和函数参数
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"]);
输出如下 -
notranslate
Mark
Printing names array....
Mark
Tom
Mary
John
Union类型和数组
Union类型还可以应用于数组、属性和接口。下面说明了Union类型与数组的使用。
示例:Union类型和数组
demo-code
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 代码。
just-code
//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]);
}
其输出如下 -
notranslate
**numeric array**
1
2
4
**string array**
Mumbai
Pune
Delhi