ts 类的继承 枚举!!!

1,571 阅读2分钟

ts只允许我们访问联合数据类型的共有属性和方法;

如果不是共有的不能访问

image.png

3cb94ddd21bd08d4e563e7cc9c92897a.png

屏幕截图 2023-02-17 094839.png

image.png

1.枚举类型是ts为数不多的特有类型之一

枚举其实是将每一个可能出现的值一个个的列出来,定义在类型中,这个类型就是枚举类型 枚举允许开发者定义一组命名常量,常量可以是数字,字符串类型

enum Direction{ LEFT,//0 TOP,//1 CENTER//2 BOTTOM//3

} enum Direction{ LEFT=100,//0 TOP=200,//1 CENTER=300//2 BOTTOM=400//3

} enum Direction{ LEFT=100,//0 TOP,//1 CENTER//2 BOTTOM//3

} enum Direction{ LEFT='LEFT',//0 TOP='TOP',//1 CENTER='CENTER'//2 BOTTOM='BOTTOM'//3

}

function turnDirection(direction:Direction){ } turnDirection(Direction.LEFT)

image.png

6f4d4614b484c5eeec6b96a86c52b669.png

  1. 枚举分为两种:字符串到字符串之间的映射和字符串到数字之间的映射。即key和value反向对应的对象,如下所示:

image.png

  1. 不必为枚举中的所有成员都赋值,ts会尽其所能推导出缺少的值:

image.png

  1. 枚举的值可以为字符串,甚至混用字符串和数字

image.png

  1. ts比较灵活,允许通过值访问枚举,也允许通过键访问枚举,不过容易导致问题

image.png

  1. 利用js实现enum
  • 实现key-value的反向对应的对象
  • 不可修改

image.png

使用const emun的好处,加入需要使用的enum特别多,那在执行时就会不停地使用 IIFE 产生 Object 将 Key 和 Value 绑定到 Object,会造成一些效率上的损失,也会增加内存,但是 const 并不会产生 Object ,也就不会有以上的问题。 就算到的 Enum 不多,判断时也需要一直从 Object 中找出对应的值,而如果是用 const 声明 Enum ,在编译成 JS 时就将声明的值直接放入判断中。 const enum的内插行为带来的安全问题 const enum内插值的行为在从其他人编写的TypeScript代码中导入const enum时可能导致安全问题:假如原作者在你编译TypeScript 代码之后更新了const enum,那么在运行时你使用的枚举与原作者的枚举指向的值可能不同,而TypeScript没有这么智能,无法得知这一变化。