TS2334"对象"类型上不存在属性"长度".仅限应用启动(ng-serve)

que*_*vqz 1 javascript typescript angular-cli angular

当我启动我的角度应用程序时,我遇到了问题.

我有一个执行发布请求的函数,将一些数据返回到我的组件并绘制图表.它在我启动应用程序后做了一些随机修改并保存,但是当我第一次启动应用程序时,我得到Property 'length' does not exist on type 'Object'. 了一个for循环,我在我的响应数组上.

我已经尝试迭代响应,只有它不是null,但这不起作用.

功能:

dailyForecast() {
  var token = {token : "0a1b2c3d"};
  return this._http.post("https://www.improving.com.br/api/test/hits-by-browser", token)
  .map(result => result);
}
Run Code Online (Sandbox Code Playgroud)

我在这个for循环中得到了错误,但是在我重新编译之后它工作正常.

ngOnInit() {
  let chart = < any > {};
  this._weather.dailyForecast()
    .subscribe(res => {
      console.log(res);
      let browsers = [];
      let browsersAcesss = [];
      if (res !== null) {
        for (var i = 0; i < res.length; i++) {
          browsers.push(res[i][0]);
          browsersAcesss.push(res[i][1]);
        }
      }
    });
}
Run Code Online (Sandbox Code Playgroud)

Chr*_*odz 6

如果要避免编译错误,可以将响应类型设置any[]为自定义接口.

ngOnInit() {
  let chart = < any > {};
  this._weather.dailyForecast()
    .subscribe((res: any[]) => {
      console.log(res);
      let browsers = [];
      let browsersAcesss = [];
      if (res !== null) {
        for (var i = 0; i < res.length; i++) {
          browsers.push(res[i][0]);
          browsersAcesss.push(res[i][1]);
        }
      }
    });
}
Run Code Online (Sandbox Code Playgroud)

  • 您可以使用“Array.isArray(res)”,如果它包含数组,则返回 true,然后您可以使用 res.length (2认同)