TypeScript 联合类型

联合类型(Union Types)可以通过管道(|)将变量设置多种类型,赋值时可以根据设置的类型来赋值。

注意 :只能赋值指定的类型,如果赋值其它类型就会报错。

创建联合类型的语法格式如下:

										Type1|Type2|Type3
									

实例

声明一个联合类型:

TypeScript

var val : string | number val = 12 console . log ( " 数字为 " + val ) val = " yssmx " console . log ( " 字符串为 " + val )

编译以上代码,得到以下 JavaScript 代码:

JavaScript

var val ; val = 12 ; console . log ( " 数字为 " + val ) ; val = " yssmx " ; console . log ( " 字符串为 " + val ) ;

输出结果为:

									数字为 12
字符串为 yssmx
								

如果赋值其它类型就会报错:

									var val:string|number 
val = true
								

也可以将联合类型作为函数参数使用:

TypeScript

function disp ( name : string | string [ ] ) { if ( typeof name == " string " ) { console . log ( name ) } else { var i ; for ( i = ; i < name . length ; i ++ ) { console . log ( name [ i ] ) } } } disp ( " yssmx " ) console . log ( " 输出数组.... " ) disp ( [ " yssmx " , " Google " , " Taobao " , " Facebook " ] )

编译以上代码,得到以下 JavaScript 代码:

JavaScript

function disp ( name ) { if ( typeof name == " string " ) { console . log ( name ) ; } else { var i ; for ( i = ; i < name . length ; i ++ ) { console . log ( name [ i ] ) ; } } } disp ( " yssmx " ) ; console . log ( " 输出数组.... " ) ; disp ( [ " yssmx " , " Google " , " Taobao " , " Facebook " ] ) ;

输出结果为:

									yssmx
输出数组....
yssmx
Google
Taobao
Facebook
								

联合类型数组

我们也可以将数组声明为联合类型:

TypeScript

var arr : number [ ] | string [ ] ; var i : number ; arr = [ 1 , 2 , 4 ] console . log ( " **数字数组** " ) for ( i = ; i < arr . length ; i ++ ) { console . log ( arr [ i ] ) } arr = [ " yssmx " , " Google " , " Taobao " ] console . log ( " **字符串数组** " ) for ( i = ; i < arr . length ; i ++ ) { console . log ( arr [ i ] ) }

编译以上代码,得到以下 JavaScript 代码:

JavaScript

var arr ; var i ; arr = [ 1 , 2 , 4 ] ; console . log ( " **数字数组** " ) ; for ( i = ; i < arr . length ; i ++ ) { console . log ( arr [ i ] ) ; } arr = [ " yssmx " , " Google " , " Taobao " ] ; console . log ( " **字符串数组** " ) ; for ( i = ; i < arr . length ; i ++ ) { console . log ( arr [ i ] ) ; }

输出结果为:

									**数字数组**
1
2
4
**字符串数组**
yssmx
Google
Taobao