枚舉
- 默認(rèn)枚舉屬性的值為整型,且從0開始自動(dòng)遞增, 如下:
enum Direction{
Up,Down,Left,Right,
}
也可以指定值葱峡。如指定
Up = 1
泥从,以便枚舉從1 開始葛圃。也枚舉值也支持字符串類型:
enum Direction{
Up = "UP",Down = "DOWN",Left="LEFT",Right="RIGHT",
由于 JS 類型的靈活性也支持混合類型的枚舉成員诬烹,但是一定不推薦這樣做型檀。
枚舉不僅支持常量值也支持編譯期可計(jì)算的值冗尤。
如:
- 引用了其他的枚舉常量。
2)括號(hào)內(nèi)的枚舉常量表達(dá)式胀溺。 - 使用了
+
,-
,~
一元操作符的枚舉常量值裂七。 - 使用了
+
,-
,*
,/
,%
,<<
,>>
,&
,|
,^
二元操作符的枚舉常量表達(dá) 式。
- 某些枚舉成員也可以當(dāng)類型使用仓坞,示例如下:
enum ShapeKind{
Circle,
Square,
}
interface Circle{
kind: ShapeKind.Circle;
radius:number;
}
interface Square{
kind: ShapeKind.Square;
sideLength: number;
}
枚舉成員也可以當(dāng)對(duì)象使用背零,因?yàn)樗谶\(yùn)行期的確是有對(duì)應(yīng)存在的。
對(duì)于數(shù)值類型的枚舉无埃,以枚舉成員作為屬性訪問(wèn)枚舉類可以獲得對(duì)應(yīng)的枚舉成員的屬性名徙瓶。
const
枚舉。聲明為 const 的枚舉只存在于編譯期嫉称,生成的代碼中將刪除侦镇。Ambient 枚舉。用于描述在其他地方已經(jīng)存在的枚舉類型织阅。
declare enum Enum{
A = 1,
B,
C = 2
}
類型推斷
基本推斷
let x = 3;
意味著let x:number = 3;
最佳公共類型推斷對(duì)于字面量包含多個(gè)值時(shí)(比如數(shù)組)壳繁,自動(dòng)推斷的類型有可能是他們的共同的父類型,或者一個(gè)聯(lián)合類型荔棉。
上下文類型氮趋,例如下面的代碼,可以推斷出
moveEvent
沒(méi)有button
屬性江耀。
window.onmousedown = function(mouseEvent){
console.log(mouseEvent.button); // <- Error
}