学习TypeScrip10(枚举类型)

本文介绍了JavaScript中缺失的枚举在TypeScript中的应用,包括数字枚举、增长枚举、字符串枚举、异构枚举、接口枚举、对象枚举、const枚举以及反向映射。同时提到了TypeScript11中的类型推论和类型别名。
摘要由CSDN通过智能技术生成

在javaScript中是没有枚举的概念,TS帮我们定义了枚举这个类型,通过enum关键字定义我们的枚举

1. 数字枚举

例如 红绿蓝 Red = 0 Green = 1 Blue= 2 分别代表红色0绿色为1 蓝色为2

enum Types {
	Red,
	Green,
	BLue,
}

这样写就可以实现应为ts定义的枚举中的每一个组员默认都是从0开始的所以也就是

enum Types {
	Red = 0,
	Green = 1,
	BLue = 2,
}
//默认就是从0开始的 可以不写值

2. 增长枚举

enum Types {
	Red = 1,
	Green,
	BLue,
}

如上,我们定义了一个数字枚举, Red使用初始化为 1。 其余的成员会从 1开始自动增长。 换句话说, Type.Red的值为 1, Green为 2, Blue为 3。

3. 字符串枚举

字符串枚举的概念很简单。 在一个字符串枚举里,每个成员都必须用字符串字面量,或另外一个字符串枚举成员进行初始化。

enum Types {
	Red = 'red',
	Green = 'green',
	BLue = 'blue',
}

由于字符串枚举没有自增长的行为,字符串枚举可以很好的序列化。 换句话说,如果你正在调试并且必须要读一个数字枚举的运行时的值,这个值通常是很难读的,它并不能表达有用的信息,字符串枚举允许你提供一个运行时有意义的并且可读的值,独立于枚举成员的名字。

4. 异构枚举

枚举可以混合字符串和数字成员

enum Types {
	No = 'No',
	Yes = 1,
}

5. 接口枚举

enum Types {
	yyds,
	dddd,
}
interface A {
	red: Types.yyds;
}

6. 对象枚举

声明对象的时候要遵循这个规则

enum Types {
	yyds,
	dddd,
}
let obj: A = {
	red: Types.yyds,
};

7. const枚举

  • 枚举中,let 和 var 都是不允许的声明,只能使用const

  • 大多数情况下,枚举是十分有效的方案。 然而在某些情况下需求很严格。 为了避免在额外生成的代码上的开销和额外的非直接的对枚举成员的访问,我们可以使用 const枚举。

  • 常量枚举通过在枚举上使用 const修饰符来定义

const enum Types {
	No = 'No',
	Yes = 1,
}
console.log(Types.No);
console.log(Types.Yes);

  • const 声明的枚举会被编译成常量,声明编译之后
console.log("No" /* Types.No */);
console.log(1 /* Types.Yes */);
  • 普通声明编译之后
var Types;
(function (Types) {
    Types["No"] = "No";
    Types[Types["Yes"] = 1] = "Yes";
})(Types || (Types = {}));
console.log(Types.No);
console.log(Types.Yes);

8. 反向映射

它包含了正向映射( name -> value)和反向映射( value -> name)

要注意的是不会为字符串枚举成员生成反向映射。

enum Enum {
	fall,
}
let a = Enum.fall;
console.log(a); //0
let nameOfA = Enum[a];
console.log(nameOfA); //fall

学习TypeScrip11(类型推论|类型别名)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值