TypeScript 学习笔记 之 枚举与类型推断

枚举

  1. 默认枚举属性的值为整型,且从0开始自动递增, 如下:
enum Direction{
  Up,Down,Left,Right,
}
  1. 也可以指定值。如指定 Up = 1 ,以便枚举从1 开始。

  2. 也枚举值也支持字符串类型:

enum Direction{
 Up = "UP",Down = "DOWN",Left="LEFT",Right="RIGHT",
  1. 由于 JS 类型的灵活性也支持混合类型的枚举成员,但是一定不推荐这样做。

  2. 枚举不仅支持常量值也支持编译期可计算的值。
    如:

  1. 引用了其他的枚举常量。
    2)括号内的枚举常量表达式。
  2. 使用了 +,-,~ 一元操作符的枚举常量值。
  3. 使用了 +,-,*,/,%,<<,>>,&,|,^ 二元操作符的枚举常量表达 式。
  1. 某些枚举成员也可以当类型使用,示例如下:
enum ShapeKind{
  Circle,
  Square,
}
interface Circle{
  kind: ShapeKind.Circle;
  radius:number;
}
interface Square{
  kind: ShapeKind.Square;
  sideLength: number;
}
  1. 枚举成员也可以当对象使用,因为它在运行期的确是有对应存在的。

  2. 对于数值类型的枚举,以枚举成员作为属性访问枚举类可以获得对应的枚举成员的属性名。

  3. const 枚举。声明为 const 的枚举只存在于编译期,生成的代码中将删除。

  4. Ambient 枚举。用于描述在其他地方已经存在的枚举类型。

declare enum Enum{
  A = 1,
  B,
  C = 2
}

类型推断

  1. 基本推断 let x = 3; 意味着 let x:number = 3;

  2. 最佳公共类型推断对于字面量包含多个值时(比如数组),自动推断的类型有可能是他们的共同的父类型,或者一个联合类型。

  3. 上下文类型,例如下面的代码,可以推断出 moveEvent 没有 button 属性。

window.onmousedown = function(mouseEvent){
  console.log(mouseEvent.button); // <- Error
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • importUIKit classViewController:UITabBarController{ enumD...
    明哥_Young阅读 3,874评论 1 10
  • 1、范型范型所解决的问题 函数、方法、类型:类,结构体,枚举,元组类型,协议参数,返回值,成员函数参数,成员属性类...
    我是小胡胡123阅读 853评论 0 1
  • 常量与变量使用let来声明常量,使用var来声明变量。声明的同时赋值的话,编译器会自动推断类型。值永远不会被隐式转...
    莫_名阅读 461评论 0 1
  • 基础部分(The Basics) 当推断浮点数的类型时,Swift 总是会选择Double而不是Float。 结合...
    gamper阅读 1,332评论 0 7
  • 同步,异步:同步是指:当一个 block 被添加到 queue 时,会阻塞当前运行的线程,直到 block 中的内...
    小梁同学阅读 363评论 0 1