【发布时间】:2019-06-08 22:37:50
【问题描述】:
function f(): unknown {
return {abc: "ABC"};
}
const a = f();
if (a && a instanceof Object && a.hasOwnProperty("abc")) {
console.log(a.abc);
}
我有一个变量 a,它最初是 unknown 类型(>= TypeScript 3.0)。
当a 具有该属性时,我想在if 语句 中使用a 的abc 属性。
但是,正如上面的 VS 代码屏幕截图所示,即使我在 if 条件中检查了 a.hasOwnProperty("abc"),TypeScript 编译器也会给出 TS2339 错误。
“对象”类型上不存在属性“abc”。 ts(2339)
我知道我可以通过将a转换为any类型来绕过这个错误,但是它会使编译器忽略成员名称的拼写错误,如果a中有很多属性会很糟糕以及与变量 a 相关的许多事情。
TypeScript 编译器有没有办法知道a 具有某些属性?
【问题讨论】:
标签: typescript types compiler-errors