typescript - 即使在构造函数中添加,仍然出现属性不存在错误 Angular
在创建一个网络应用程序时,我在处理其中一个服务时,在我的 IDE(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 对我显示了所有三个(adapter、toastr、translate)的错误,提示它们不存在。我觉得这很奇怪,因为我对其他服务做的是相同的操作,而且它们似乎都工作得很好。我以为是 IDE 的问题,于是换用了 Atom,但错误依然存在。我运行了 ng s 来看看是否只是 IDE 问题,结果发现错误某种程度上确实存在,因为它抛出了以下错误:
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'.
我在这里做错了什么?
答案#1
我觉得自己很笨。我忘了在构造函数中声明声明的作用域。本来应该是:
constructor(
private adapter: SuiteAdapterService,
private toastr: ToastrService,
private translate: TranslatePipe
) {}
我觉得对于一种不是严格类型化的语言来说,有构造函数声明并且应该定义它们的作用域,这很令人困惑。也许这是以后再讨论的话题。
