在打字稿中,我通常有一个变量,其类型如下:
avgMyVal
当我想检查变量的形状时,我通常想做
const variable: { a: string } | { b: number };
但是在严格模式下,打字稿会在if (variable.a !== undefined) {
// do stuff
}
else {
// do stuff
处引发类型错误,因为不知道variable.a
具有属性variable
。为了解决这个问题,我通常像a
一样投向any
。但是,打字稿不会将其视为类型防护,也不会缩小(variable as any).a !== undefined
的类型。
在严格模式下(不进行自定义类型保护),是否有“适当”的方式在打字稿中进行检查?
我尝试过的一些示例(不幸的是,它们还会引发类型错误):
variable
typeof variable.a !== 'undefined'
答案 0 :(得分:1)
在这种情况下,最简单的区分方法是使用in
类型防护:
declare const variable: { a: string } | { b: number };
if ('a' in variable) {
variable.a
}
else {
variable.b
}