类型“any [] | undefined”不能分配给类型“any []”

时间:2021-05-02 17:49:51

标签: angular typescript

自从我今天更新了我的 npm 和所有模块以来,我遇到了一个新问题。 在我进行更新之前一切正常。

错误是“类型”any [] | undefined" 不能分配给类型 "any []""

代码

    this.myservice.myfunction().toPromise().then((data)=>{
      this.variable = data;
    }).catch((error)=>{
      console.log("Promise rejected with " + JSON.stringify(error));
    });

在服务中:

  myfunction(): Observable<any[]> {
    return this.http.post<any[]>(`${this.baseUrl}/GetDataFromBackend`, {  }).pipe(
      map((res) => res),
      catchError(this.handleError));
  }

有人知道为什么我在更新后出现这个错误吗?我怎样才能解决这个问题?我几乎在每个组件和后端连接上都得到了这个...

1 个答案:

答案 0 :(得分:0)

这是一个打字稿错误。您可以通过多种方式解决该问题。

1:您可以像这样检查未定义:

    this.myservice.myfunction().toPromise().then((data)=>{
       if(data !== undefined && data !== null) {
          this.variable = data;
      }
    }).catch((error)=>{
      console.log("Promise rejected with " + JSON.stringify(error));
    });

2-如果你知道这个值永远不会被定义,你可以用“!”强制它像这样:

    this.myservice.myfunction().toPromise().then((data)=>{
       
          this.variable = data!;
      
    }).catch((error)=>{
      console.log("Promise rejected with " + JSON.stringify(error));
    });

3- 您可以在声明变量时将其类型更改为:

let variable: any [] | undefined = [];

我确信还有更多方法可以解决此问题。但这三个是我个人经验中最常用的。

优点是您不必在项目中全局禁用“严格”等不错的功能。

重点是使用更严格的强类型模型进行开发,而不是通过“降低标准”来削弱您的代码。