前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Typescript使用字符串联合类型代替枚举类型

Typescript使用字符串联合类型代替枚举类型

作者头像
javascript.shop
发布2019-09-04 16:03:19
3.1K0
发布2019-09-04 16:03:19
举报
文章被收录于专栏:杰的记事本杰的记事本

TypeScript宗旨

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

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

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

Enum实现

代码语言:javascript
复制
// TypeScript
enum Test {
    enum1 = 2,
    enum2,
    enum3
}
const test:Test = Test.enum2; // 3
 
// 编译为javscript
var Test;
(function (Test) {
    Test[Test["enum1"] = 2] = "enum1";
    Test[Test["enum2"] = 3] = "enum2";
    Test[Test["enum3"] = 4] = "enum3";
})(Test || (Test = {}));
var test = Test.enum2; // 3

推荐联合类型(string literal union)实现

代码语言:javascript
复制
// Typescript
type Test = 'enum1' | 'enum2' | 'enum3';
const test: Test = 'enum2';

// 编译为javscript,非常简单
var test = 'enum2';
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019年8月25日2,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • TypeScript宗旨
  • Enum实现
  • 推荐联合类型(string literal union)实现
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档