due*_*l0r 8 casting implicit-cast typescript
为什么以下在TypeScript中编译?
enum xEnum {
X1,X2
}
function test(x: xEnum) {
}
test(6);
Run Code Online (Sandbox Code Playgroud)
它不应该抛出错误吗?恕我直言这隐式演员在这里是错的,不是吗?
这是游乐场的链接.
Fen*_*ton 10
这是语言规范的一部分(3.2.7枚举类型):
枚举类型可分配给Number基本类型,反之亦然,但不同的枚举类型不能彼此分配
因此,允许在number和之间进行隐式转换的决定Enum是有意的.
这意味着您需要确保该值有效.
function test(x: xEnum) {
if (typeof xEnum[x] === 'undefined') {
alert('Bad enum');
}
console.log(x);
}
Run Code Online (Sandbox Code Playgroud)
虽然您可能不同意实现,但值得注意的是,枚举在以下三种情况下很有用:
// 1. Enums are useful here:
test(xEnum.X2);
// 2. ...and here
test(yEnum.X2);
Run Code Online (Sandbox Code Playgroud)
3. - 当你输入test(它时会告诉你你可以使用的枚举类型来保证你选择一个存在的类型.
| 归档时间: |
|
| 查看次数: |
12694 次 |
| 最近记录: |