T

TypeScript 中枚举没必要用?【讨论】枚举对编译后的 JavaScript 文件的影响 我的想法

2025-06-10

TypeScript 中我们没必要使用枚举吗?【讨论】

枚举对编译后的 JavaScript 文件有影响

我的想法

嗨,开发者们!我是Taishi,温哥华的一名软件开发人员!

我最近一直在考虑使用枚举,我的结论是,如果可能的话,我们应该使用枚举。

但为什么?

枚举对编译后的 JavaScript 文件有影响

通常tsc命令会删除所有 TypeScript 特有的内容,例如

  • 类型定义
  • 接口定义
  • 类型注解

这意味着 TypeScript 对编译后的 JavaScript 文件没有任何影响。

另一方面,如果使用枚举,TypeScript 会对 JS 文件产生一些影响。

让我们比较一下它们!

案例 1:联合类型

TypeScript

type BigTechz = "Google" | "Apple" | "Amazon";

const myFav: BigTechz = "Apple";
Enter fullscreen mode Exit fullscreen mode

之后的 Javascripttsc

"use strict";
const myFav = "Apple";
Enter fullscreen mode Exit fullscreen mode

案例 2:枚举

enum BigTechz {
  Google = "Google",
  Apple = "Apple",
  Amazon = "Amazon",
}

const myFav: BigTechz = BigTechz.Apple;
Enter fullscreen mode Exit fullscreen mode

之后的 Javascripttsc

"use strict";
var BigTechz;
(function (BigTechz) {
  BigTechz["Google"] = "Google";
  BigTechz["Apple"] = "Apple";
  BigTechz["Amazon"] = "Amazon";
})(BigTechz || (BigTechz = {}));
const myFav = BigTechz.Apple;
Enter fullscreen mode Exit fullscreen mode

我的想法

如上所示,枚举作为对象保留在 JavaScript 文件中……这会导致打包体积增大。
更重要的是,我认为 TypeScript 应该不会对编译后的 JavaScript 文件产生任何影响。

tsc当您编写代码和使用命令编译 TS 文件时,TypeScript 基本上是一个类型检查器。

大多数时候,您可以使用其他 TS 语法代替枚举,我认为如果可能的话我们应该这样做(也许我只是更喜欢 Union 类型🙄)!

我想听听其他开发人员对这个话题的看法,如果您能发表评论我将不胜感激!

谢谢!

鏂囩珷鏉ユ簮锛�https://dev.to/taishi/we-shouldnt-use-enums-on-typescript-anymore-18d3
PREV
如何将 React Query 与 React 和 GraphQL 结合使用
NEXT
开始你的贡献之旅