gpt4 book ai didi

casting - TypeScript:要枚举的隐式数字

转载 作者:搜寻专家 更新时间:2023-10-30 20:35:43 27 4
gpt4 key购买 nike

为什么下面的代码会在 TypeScript 中编译?

enum xEnum {
X1,X2
}

function test(x: xEnum) {
}

test(6);

它不应该抛出错误吗?恕我直言,这种隐式转换在这里是错误的,不是吗?

这是 playground link .

最佳答案

这是语言规范的一部分(3.2.7 枚举类型):

Enum types are assignable to the Number primitive type, and vice versa, but different enum types are not assignable to each other

因此允许在 numberEnum 之间进行隐式转换的决定是经过深思熟虑的,反之亦然。

这意味着您需要确保该值有效。

function test(x: xEnum) {
if (typeof xEnum[x] === 'undefined') {
alert('Bad enum');
}
console.log(x);
}

尽管您可能不同意这种实现方式,但值得注意的是枚举在以下三种情况下很有用:

// 1. Enums are useful here:
test(xEnum.X2);

// 2. ...and here
test(yEnum.X2);

和 3. - 当您键入 test( 时,它会告诉您枚举类型,您可以使用它来保证您选择一个存在的类型。

关于casting - TypeScript:要枚举的隐式数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25762823/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com