下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922

web前端:Typescript使用字符串联合类型代替枚举类型

作者: 孑孓子     来源: https://www.cnblogs.com/handboy/p/11410066.html点击数:807发布时间: 2020-03-02 11:44:58

标签: 编程语言数据结构技术开发

Web开发

  TypeScript是一种由微软开发的自由和开源的编程语言。它是Javascript的一个超集,而且本质上向这个语言添加了可选的静态类型和基于类的面向对象编程

  TypeScript宗旨

  我觉得Typescript的宗旨是任何一个TypeScript程序,在手动删去类型部分,将后缀改成.js后,都应能够正常运行。Typescript是javascript的超集,是编译期行为,不引入额外开销,不改变运行时行为,始终与ESMAScript语言标准一致。

  但是enum类型了引入了JavaScript没有的数据结构(编译成一个双向map),入侵了运行时,与TypeScript宗旨不符。用字符串联合类型('enum1'|'enum2'|'enum3')可以做到相同的事,且在调试时可读性更好。

  以下代码展示了enum违背了宗旨的证据:

  Enum实现

  //TypeScript

  enumTest{

  enum1=2,

  enum2,

  enum3

  }

  consttest:Test=Test.enum2;//3

  //编译为javscript

  varTest;

  (function(Test){

  Test[Test["enum1"]=2]="enum1";

  Test[Test["enum2"]=3]="enum2";

  Test[Test["enum3"]=4]="enum3";

  })(Test||(Test={}));

  vartest=Test.enum2;//3

  推荐联合类型(stringliteralunion)实现

  //Typescript

  typeTest='enum1'|'enum2'|'enum3';

  consttest:Test='enum2';

  //编译为javscript,非常简单

  vartest='enum2';

  TypeScript是一种由微软开发的自由和开源的编程语言。它是JavaScript的一个超集,而且本质上向这个语言添加了可选的静态类型和基于类的面向对象编程。安德斯·海尔斯伯格,C#的首席架构师,已工作于TypeScript的开发。

赞(8)
踩(0)
分享到:
华为认证网络工程师 HCIE直播课视频教程