gpt4 book ai didi

typescript - 如何使TS编译器知道未知变量具有某些属性(不使用 `any`类型)

转载 作者:行者123 更新时间:2023-12-02 10:53:27 26 4
gpt4 key购买 nike

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)。
我想在 abc具有属性的if语句中使用 aa属性。

VS code ts error screenshot

但是,如上面的VS代码屏幕截图所示,即使我在if条件下检查了 TS2339,TypeScript编译器也给出了 a.hasOwnProperty("abc")错误。

Property 'abc' does not exist on type 'object'. ts(2339)



我知道我可以通过将 a转换为 any类型来绕过此错误,但这会使编译器忽略成员名称的错字,并且如果 a中有很多属性并且与变量 a有很多关系,这将是很糟糕的。

TypeScript编译器是否可以知道 a具有某些属性?

最佳答案

您可以使用{ [index: string]: unknown }代替unknown来告诉TypeScript您的对象是未知属性的字典。

declare const unfamiliar: { [index: string]: unknown };

if ('foo' in unfamiliar) {
unfamiliar.foo;
}

关于typescript - 如何使TS编译器知道未知变量具有某些属性(不使用 `any`类型),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56505639/

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