聯合類型(Union Types)可以通過管道(|)將變量設置多種類型,賦值時可以根據設置的類型來賦值。表示取值可以爲多種類型中的一種,使用 | 分隔每個類型。
注意:只能賦值指定的類型,如果賦值其它類型就會報錯。
創建聯合類型的語法格式如下:
Type1|Type2|Type3
//聯合類型
var uniteType: string|number = 1122;
console.log('數字:'+uniteType);
uniteType = 'muzidigbig';
console.log('字符串:'+uniteType);
聯合類型數組
//聯合類型數組
var uniteTypeArr: number[]|string[];
uniteTypeArr = [1,2,4];
console.log('數字數組:'+uniteTypeArr);
uniteTypeArr = ['muzi','digbig',',muzidigbig'];
console.log('字符串數組:'+uniteTypeArr);
類型別名 type
使用 type
創建類型別名
類型別名用來給一個類型起個新名字,多用於聯合類型:
type Name = string;
type GetName = () => string;
type NameOrGetter = Name | GetName;
function getName(n: NameOrGetter): Name {
if (typeof n === 'string') {
return n;
} else {
return n();
}
}
type 聲明可以定義聯合類型,基本類型等多種類型,而 interface 只能定義對象類型
字符串字面量類型
字符串字面量類型用來約束取值只能是某幾個字符串中的一個。
type EventNames = 'click' | 'scroll' | 'mousemove';
function handleEvent(ele: Element, event: EventNames) {
// do something
}
handleEvent(document.getElementById('hello'), 'scroll'); // 沒問題
handleEvent(document.getElementById('world'), 'dbclick'); // 報錯,event 不能爲 'dbclick'