在typescript项目中什么场景适合定义枚举值,什么场景适合定义常量类?

在typescript项目中什么场景适合定义枚举值,什么场景适合定义常量类

在 TypeScript 中,枚举(enum)和常量类(通常是带有只读属性的类)都有其适用场景:

适合定义枚举值的场景:

  1. 有限且命名的集合
    当你需要表示一组固定的、可枚举的值,并且每个值都有一个明确的名字时,使用枚举类型是合适的。例如,星期几、月份、状态码等。

    enum HttpStatusCode { OK = 200, Created = 201, BadRequest = 400, Unauthorized = 401, NotFound = 404, }
  2. 意图清晰
    枚举有助于提高代码的可读性与自解释性,阅读者可以直接通过名称了解变量或函数参数的意义。

  3. 类型安全
    TypeScript 编译器可以对枚举类型的变量进行静态类型检查,确保在编译阶段就能捕获到类型不匹配的问题。

适合定义常量类的场景:

  1. 包含多个相关常量
    当需要定义一组相关的常量,每个常量代表不同的概念,但它们之间可能有共同的上下文或者逻辑关系时,可以考虑使用常量类。例如,定义一组坐标系原点坐标和单位长度。

    class CoordinateSystem { static readonly ORIGIN_X: number = 0; static readonly ORIGIN_Y: number = 0; static readonly UNIT_LENGTH: number = 10; } // 使用时 const x = CoordinateSystem.ORIGIN_X;
  2. 复杂结构
    如果常量具有更复杂的结构,比如对象或数组,而不是单一的原始类型值,那么常量类中的只读属性会更加合适。因为枚举成员不能直接包含这些复杂类型。

  3. 方法支持
    常量类还可以包含一些辅助方法,这些方法基于常量值提供服务。尽管对于纯粹的常量而言这不是必需的,但在某些情况下它能提升代码组织性和便利性。

总结来说,选择枚举还是常量类主要取决于你的需求是否为命名集合以及是否需要额外的功能。简单、可枚举的命名值集通常更适合用枚举来表达,而当需要存储和组织更多元化、结构化的常量数据时,则倾向于使用常量类。

一、何时使用自定义常量

1、单独的常量值:当您需要定义单个不变的值时,如配置值、数学常数等。

2、不属于同一类别的常量:如果常量之间没有逻辑关联,它们可能属于不同的类别

比如一些配置信息,如最大用户数

二、何时使用枚举类

1、固定的常量集合:当您有一组固定的常量,且它们在逻辑上属于同一类别时,使用枚举是最佳选择。例如,星期(MONDAY, TUESDAY, …)、季节(SPRING, SUMMER, …)等。

2、需要类型安全:枚举提供类型安全,即您只能选择枚举中定义的值,减少了运行时错误。

3、关联行为和属性:如果每个常量都与特定的行为和属性相关联,枚举允许您将这些信息和行为封装在一个地方。

比如文件上传状态,鼠标拖拽状态,颜色、方向、角色、大小、等,均适合使用枚举

使用枚举可以提高代码的组织性和可读性,尤其是当常量属于同一类别且相关联时。

https://developer.aliyun.com/article/1410384#slide-5


__EOF__

本文作者龙陌
本文链接https://www.cnblogs.com/longmo666/p/18034962.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   龙陌  阅读(61)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示