最近团队制定了一个typescript规范是所有枚举使用const enum, 为什么呢?我们来看:
enum 生成的结构如下:

const enum 生成的代码是内联的:

babel 不支持这个语法,网上有一个 plugin: babel-plugin-const-enum)支持了这个语法,只是生成的代码有差别:


babel-plugin-const-enum 生成的结果较好, 如果是自增的数字值还是typescript理想。
还有个比较好的点是现有的eslint规则稍加配置就可以支持这个规范:
{
"no-restricted-syntax": [
"error",
// 默认的
// ...
// 必须使用 const enum
{
"selector": "TSEnumDeclaration:not([const=true])",
"message": "Don't declare non-const enums"
}
]
}
配置需要把默认的其他限制语法也加上,不然被覆盖就没了,获取默认值的步骤是:
npx eslint --print-config src/index.ts > eslintrc.log(src/index.ts可以是项目中的其他文件)- 在
eslintrc.log里搜索no-restricted-syntax, 复制默认值即可