在我的Angular应用程序中,我有一个过滤功能,可以跟踪用户输入的过滤器值,以及这些过滤器值当前是否已启用/活动。我正在初始化这些过滤器:
['hij / klm']
我在这部分代码中遇到了一个Typescript错误 - 特别是这一行:filters = { language: [], location: [], zipArray: [], firstName: [], lastName: [] };
return this.filters.zipArray = [];
我得到的TypeScript错误是:
类型'undefined []'不能分配给'void'类型。
我不明白这里的问题是什么?
答案 0 :(得分:7)
您将onZipcodeEnabledChange
的返回类型声明为void,表示函数不会返回任何内容。在if语句中,您将返回return this.filters.zipArray = [];
的分配结果,即[]。
解决方案1
只需删除return关键字即可。
public onZipcodeEnabledChange(enabled): void {
this.filters.zipArray = this.getZipcodeArray();
if (!enabled || this.filters.zipArray && this.filters.zipArray[0] === ''){
this.filters.zipArray = [];
}
}
解决方案2
如果你想从该函数返回数组,你需要用any[]
替换void。
public onZipcodeEnabledChange(enabled): any[] {
this.filters.zipArray = this.getZipcodeArray();
if (!enabled || this.filters.zipArray && this.filters.zipArray[0] === ''){
this.filters.zipArray = [];
return this.filters.zipArray;
}
}