打字稿错误:类型'undefined []'不能分配给'void'类型

时间:2018-04-18 16:47:31

标签: javascript angular typescript

在我的Angular应用程序中,我有一个过滤功能,可以跟踪用户输入的过滤器值,以及这些过滤器值当前是否已启用/活动。我正在初始化这些过滤器:

['hij / klm']

我在这部分代码中遇到了一个Typescript错误 - 特别是这一行:filters = { language: [], location: [], zipArray: [], firstName: [], lastName: [] };

return this.filters.zipArray = [];

我得到的TypeScript错误是:

  

类型'undefined []'不能分配给'void'类型。

我不明白这里的问题是什么?

1 个答案:

答案 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;
    }
}