【发布时间】:2018-01-17 07:41:25
【问题描述】:
我一直在挖掘 TypeScript 中的 enum,它让我思考使用它的意义何在。我不是质疑它的价值。只是我不熟悉它的用法,这导致我编写代码,比如声明某种对象,这些对象在不使用enum 的情况下在整个应用程序中保持常量使用。总而言之,使用它的意义何在,而不仅仅是使用/声明保持一些常量的手动对象?任何见解将不胜感激!
【问题讨论】:
标签: typescript enums
我一直在挖掘 TypeScript 中的 enum,它让我思考使用它的意义何在。我不是质疑它的价值。只是我不熟悉它的用法,这导致我编写代码,比如声明某种对象,这些对象在不使用enum 的情况下在整个应用程序中保持常量使用。总而言之,使用它的意义何在,而不仅仅是使用/声明保持一些常量的手动对象?任何见解将不胜感激!
【问题讨论】:
标签: typescript enums
枚举可以方便地强制进行类型验证(使用常量不容易),并且很容易将可读的枚举转换为数字,反之亦然。
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”吗?另外,为什么能够将可读的枚举转换为数字?
在我看来,您的问题与 TypeScript 无关,而是通用的,为什么人们会在任何语言中使用 enums 而不是 constants。所以只要谷歌,你会发现很多东西。我快速浏览了一下:https://gorbeia.wordpress.com/2015/03/11/java-enums-vs-constants/
如果你问我enums 是组织代码的更好方法。
如果您的问题与typescript 相关,请在打字稿中(即java)中提供更多关于enums 不同之处的详细信息。
【讨论】:
a better way to organize my code 是什么意思?
UP 和 DOWN 与 Direction.UP 和 Direction.DOWN