gpt4 book ai didi

javascript - 找不到 TypeScript 属性错误 :

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

我的 vscode 中出现以下错误:

[ts] Property 'getPatientAllAddress' does not exist on type 'Object'.

为什么要检查动态添加的 getPatientAllAddress() 方法?这在 Javascript 中通常不会发生。

get addresses() {
if (this.data && this.data.hasOwnProperty("getPatientAllAddress")) {
return this.data.getPatientAllAddress();
}
}

如何抑制/忽略此警告。

最佳答案

到目前为止,this.data 的类型是Object。发生该错误是因为您试图访问类型为 Object 的变量的 .getPatientAllAddress() 属性。即使您已经从逻辑上确认它应该具有该属性,编译器还不够聪明,无法理解它应该使该属性在该变量的接口(interface)上可用。

解决方案一

如果您没有打开 noImplicitAny 标志,您应该能够将最后一行更改为

return data['getPatientAllAddress']();

方案二

this.data 的类型设置为 :{getPatientAllAddress?:Function}(或者在更好的情况下,创建与 this.data 对应的接口(interface),其中包含该函数).

使用 Function 或更合适的更具体的类型。

方案三

为全量数据定义一个接口(interface)

interface Bleh {
getPatientAllAddress : Function
}

和类型保护

function isBleh(x:any) : x is Bleh {
return x && x.hasOwnProperty("getPatientAllAddress");
}

并用作

if (isBleh(this.data)) {
this.data.getPatientAllAddress();
}

解决方案 1 是最简单的,解决方案 2 是最正确的(尽管您实际上也应该在该接口(interface)中定义其他所有内容,而不仅仅是这个可选函数),而解决方案 3 是我炫耀语言特性和谈论一半的一半在 1 和 2 不可行的情况下您需要做什么。

关于javascript - 找不到 TypeScript 属性错误 :,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41423545/

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