在 TypeScript 中使用 ENUM 有什么意义?

Don*_*Kim 7 enums typescript

我一直在enum研究 TypeScript,它让我思考使用它的意义何在。我不是在质疑它的价值。只是我不熟悉它的用法,这导致我编写代码,例如声明某种类型的对象,这些对象在整个应用程序中使用常量而不使用enum. 总而言之,使用它的意义是什么,与仅使用/声明保留一些常量的手动对象有何区别?任何见解将不胜感激!

Los*_*lds 9

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

enum Access {
  Read = 1,
  Write = 2,
  Execute = 4,
  AnotherAccess = 8
}
Run Code Online (Sandbox Code Playgroud)

当我有一组选择时,我总是使用它,以明确代码接受什么样的值并提高代码可读性

if( myAccess == Access[Access[myaccess]] ) // enum used
Run Code Online (Sandbox Code Playgroud)

位操作是另一回事,例如,我的访问是(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 */ }
Run Code Online (Sandbox Code Playgroud)

  • 1. 可读的枚举到数字对于按位运算很方便。2. enum 在 intellisens 中完美显示,而 type 却没有。 (2认同)