【问题标题】:What's the point of using ENUM in TypeScript?在 TypeScript 中使用 ENUM 有什么意义?
【发布时间】:2018-01-17 07:41:25
【问题描述】:

我一直在挖掘 TypeScript 中的 enum,它让我思考使用它的意义何在。我不是质疑它的价值。只是我不熟悉它的用法,这导致我编写代码,比如声明某种对象,这些对象在不使用enum 的情况下在整个应用程序中保持常量使用。总而言之,使用它的意义何在,而不仅仅是使用/声明保持一些常量的手动对象?任何见解将不胜感激!

【问题讨论】:

    标签: typescript enums


    【解决方案1】:

    枚举可以方便地强制进行类型验证(使用常量不容易),并且很容易将可读的枚举转换为数字,反之亦然。

    enum Access {
      Read = 1,
      Write = 2,
      Execute = 4,
      AnotherAccess = 8
    }
    

    当我有一组选择时,我一直使用它,以明确代码接受什么样的值以及代码可读性

    if( myAccess == Access[Access[myaccess]] ) // enum used
    

    按位运算是另一回事,例如,我的访问是 (Access.Read | Access.Execute)

    var myAccess = Access.Read | Access.Execute; //instead of 1 | 4 = 5
    
    // do I have write access?
    if ( (myAccess & Access.Write) > 0) { /* yes */ }
    
    // do I have read and execute 
    if ( (myAccess & (Access.Read | Access.Execute)) > 0) { /* yes */ }
    

    【讨论】:

    • 但是如果类型验证是你的主要对象,那么声明Type 不是更“TypeScript-y”吗?另外,为什么能够将可读的枚举转换为数字?
    • 1.可读的枚举到数字对于按位运算很方便。 2. enum 完美地显示在 intellisens 中,而 type 没有。
    • 感谢上面的例子!它帮助很大:)
    【解决方案2】:

    在我看来,您的问题与 TypeScript 无关,而是通用的,为什么人们会在任何语言中使用 enums 而不是 constants。所以只要谷歌,你会发现很多东西。我快速浏览了一下:https://gorbeia.wordpress.com/2015/03/11/java-enums-vs-constants/

    如果你问我enums 是组织代码的更好方法。

    如果您的问题与typescript 相关,请在打字稿中(即java)中提供更多关于enums 不同之处的详细信息。

    【讨论】:

    • 其实问题不仅仅局限于 TypeScript。我问过它是因为我目前正在使用 TS。感谢您的链接!不过有一个问题:a better way to organize my code 是什么意思?
    • 以什么方式更好?如果您回答问题,请具体说明。
    • @Eduard 常量是“松散”的值,不附加任何东西。枚举是“分组的”,附加到有意义的东西上。例如。 UPDOWNDirection.UPDirection.DOWN
    猜你喜欢
    • 1970-01-01
    • 2021-05-11
    • 1970-01-01
    • 2019-02-24
    • 1970-01-01
    • 2020-06-08
    • 1970-01-01
    • 2010-12-24
    • 2020-10-09
    相关资源
    最近更新 更多