Typescript使用字符串联合类型代替枚举类型
发布时间:2020-12-15 07:56:59 所属栏目:Java 来源:网络整理
导读:TypeScript宗旨 我觉得Typescript的宗旨是 任何一个 TypeScript 程序,在手动删去类型部分,将后缀改成 .js 后,都应能够正常运行。Typescript是javascript的超集,是编译期行为,不引入额外开销,不改变运行时行为,始终与 ESMAScript 语言标准一致。 但是e
TypeScript宗旨我觉得Typescript的宗旨是 任何一个 TypeScript 程序,在手动删去类型部分,将后缀改成 .js 后,都应能够正常运行。Typescript是javascript的超集,是编译期行为,不引入额外开销,不改变运行时行为,始终与 ESMAScript 语言标准一致。 但是enum类型了引入了 JavaScript 没有的数据结构(编译成一个双向 map),入侵了运行时,与 TypeScript 宗旨不符。用 字符串联合类型(‘enum1‘ | ‘enum2‘ | ‘enum3‘)可以做到相同的事,且在调试时可读性更好。 以下 代码展示了enum违背了宗旨的证据: Enum实现// 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)实现// Typescript type Test = ‘enum1‘ | ‘enum2‘ | ‘enum3‘; const test: Test = ‘enum2‘; // 编译为javscript,非常简单 var test = ‘enum2‘; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |