如何解决在打字稿中的接口中将枚举值用作类型
接口中是否有效使用了枚举?
declare enum MyEnumType {
Member1,Member2,}
interface Foo {
prop1: MyEnumType,// this is valid
prop2: MyEnumType.Member1 // how about this? If not,why?
}
解决方法
如果在沙箱中运行此代码,则会收到错误消息:
Enum type 'MyEnumType' has members with initializers that are not literals.
仅当您declare
枚举时,它才是无效的。在这种情况下,您告诉TS枚举存在,但是您不告诉它值是什么,因为这个枚举的定义可能是这样的:
enum MyEnumType {
Member1 = 8,Member2 = 'RaNdOmWhAtEvEr'
}
这意味着MyEnumType.Member2
不明确。如果您
- 显式定义枚举(删除
declare
关键字)。现在,TypeScript可以完全控制枚举,并且知道它将为其键分配值0
和1
- 明确告诉声明的枚举的键是什么
declare enum MyEnumType {
Member1 = 0,Member2 = 1
}
现在,TS知道枚举的含义,并且能够使用其键作为类型进行操作。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。