在创建web应用程序时,我在开发环境(VSCode)中偶然发现了一个不寻常的错误,当时我正在使用其中一个服务:
Error, property adapter does not exist in DetailDataService
在大多数情况下,这个错误是相当直接的,我试图添加的任何东西都没有声明,所以我应该声明缺少的变量或其他什么。然而,在本例中,所考虑的变量已经在构造函数中声明了。
constructor(
adapter: SuiteAdapterService,
toastr: ToastrService,
translate: TranslatePipe
) {}但是每当我在我的函数中引用这些时(例如):
extractData(
module: string,
where_relate_field: string,
where_field_value: string
): any {
let params = this.initializeParams(
module,
where_relate_field,
where_field_value
);
this.adapter.post("listRecords", params).subscribe(
(response) => {
this.records = response.records;
},
(error) => {
let errmsg = this.translate.transform(
"pages[login_page][responses][error][" + error.text + "]"
);
this.toastr.error(errmsg);
}
);
}IDE向我显示了所有三个(适配器、toastr、translate)都不存在的错误。我发现这很奇怪,因为我一直在为其余的服务做同样的事情,它们似乎工作得很好。我认为这是一个IDE的问题,所以我改用Atom,但错误仍然存在。我运行了ng s来查看是否只是集成开发环境的问题,但事实证明这个错误在某种程度上是合法的,因为它抛出了以下错误:
ERROR in src/app/services/dynamic-loading/data/detail/detail-data.service.ts(70,10): error TS2339: Property 'adapter' does not exist on type 'DetailDataService'.
src/app/services/dynamic-loading/data/detail/detail-data.service.ts(75,27): error TS2339: Property 'translate' does not exist on type 'DetailDataService'.
src/app/services/dynamic-loading/data/detail/detail-data.service.ts(78,14): error TS2339: Property 'toastr' does not exist on type 'DetailDataService'.我在这里做错了什么?
发布于 2020-10-29 13:08:09
我觉得自己很傻。我忘了在构造函数中声明声明的作用域。它应该是:
constructor(
private adapter: SuiteAdapterService,
private toastr: ToastrService,
private translate: TranslatePipe
) {}我发现这对于一种没有严格类型的语言来说很令人困惑,因为它有构造函数声明,而构造函数声明应该定义其作用域。也许这是改天再讨论的问题。
https://stackoverflow.com/questions/64585146
复制相似问题