gpt4 book ai didi

typescript - 运算符 === 将始终返回 'false',因为类型没有重叠

转载 作者:搜寻专家 更新时间:2023-10-30 21:56:37 26 4
gpt4 key购买 nike

我有这个代码

enum Example {
First = "First",
Second = "Second"
}

let a = [1, 2];

let newStatus: Example = Example.First;

a.forEach(i => {
newStatus = Example.Second;
});

if (newStatus === Example.Second) {
// do something
}

预期:没有错误

实际:错误:[ts] 此条件将始终返回“假”,因为类型“Example.First”和“Example.Second”没有重叠。 [2367]

最佳答案

根据@titian-cernicova-dragomir 的评论和关于 Why boolean becomes true? 的回答您可以放入强制转换运算符以强制编译器将枚举视为枚举,而不仅仅是它认为已分配的枚举的最后一个值。

因此,在您的情况下,您可以将第 8 行更改为

let newStatus: Example = Example.First as Example;

或者,如果这不能解决问题,您可以更改比较本身

if (newStatus === (Example.Second as Example)) {
// do something
}

我更喜欢更改比较,因为它是编译器吐出的那一行,但这完全取决于您有多少比较与您有多少赋值,以及您觉得哪一个更容易理解。

关于typescript - 运算符 === 将始终返回 'false',因为类型没有重叠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54323109/

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