在 If 语句中确定 IDE 中的条件类型

Determining conditional type in IDE in If statement

指定一个类型有两种格式,具体取决于其中一个键的值,就像这样

type singleOrMultiValue = {isSingle: true, value: string} | {isSingle: false, set: Array<string>}

我可以用它来防止像 const val : singleOrMultipleValue = {isSingle: false, value: '1'}.

这样的错误

但是在 运行 时尝试确定变量类型是什么,我会尝试:

if (val.isSingle) {
   console.log(val.value)
} else {
   console.log(val.set[0])
}

但这会给我错误 value does not exist on type singleOrMultiValue for {isSingle: false}。有没有办法写这个,以便 IDE 在这个 if 范围内理解,该类型的 isSingle 值为真?或者是显式声明另一个变量以符合/使用 as any?

的唯一方法

谢谢!

找到解决方案 - VS Code 可以识别 if 语句中的值,但前提是你写 else if (val.isSingle == false),而不是 else if (!val.isSingle)else {