枚举
- 默认枚举属性的值为整型,且从0开始自动递增, 如下:
enum Direction{
Up,Down,Left,Right,
}
也可以指定值。如指定
Up = 1
,以便枚举从1 开始。也枚举值也支持字符串类型:
enum Direction{
Up = "UP",Down = "DOWN",Left="LEFT",Right="RIGHT",
由于 JS 类型的灵活性也支持混合类型的枚举成员,但是一定不推荐这样做。
枚举不仅支持常量值也支持编译期可计算的值。
如:
- 引用了其他的枚举常量。
2)括号内的枚举常量表达式。 - 使用了
+
,-
,~
一元操作符的枚举常量值。 - 使用了
+
,-
,*
,/
,%
,<<
,>>
,&
,|
,^
二元操作符的枚举常量表达 式。
- 某些枚举成员也可以当类型使用,示例如下:
enum ShapeKind{
Circle,
Square,
}
interface Circle{
kind: ShapeKind.Circle;
radius:number;
}
interface Square{
kind: ShapeKind.Square;
sideLength: number;
}
枚举成员也可以当对象使用,因为它在运行期的确是有对应存在的。
对于数值类型的枚举,以枚举成员作为属性访问枚举类可以获得对应的枚举成员的属性名。
const
枚举。声明为 const 的枚举只存在于编译期,生成的代码中将删除。Ambient 枚举。用于描述在其他地方已经存在的枚举类型。
declare enum Enum{
A = 1,
B,
C = 2
}
类型推断
基本推断
let x = 3;
意味着let x:number = 3;
最佳公共类型推断对于字面量包含多个值时(比如数组),自动推断的类型有可能是他们的共同的父类型,或者一个联合类型。
上下文类型,例如下面的代码,可以推断出
moveEvent
没有button
属性。
window.onmousedown = function(mouseEvent){
console.log(mouseEvent.button); // <- Error
}