自从我今天更新了我的 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));
}
有人知道为什么我在更新后出现这个错误吗?我怎样才能解决这个问题?我几乎在每个组件和后端连接上都得到了这个...
答案 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 = [];
我确信还有更多方法可以解决此问题。但这三个是我个人经验中最常用的。
优点是您不必在项目中全局禁用“严格”等不错的功能。
重点是使用更严格的强类型模型进行开发,而不是通过“降低标准”来削弱您的代码。