自从今天更新了我的npm和所有模块以来,我遇到了一个新问题。在我更新之前,一切都正常。
错误是";类型";any[]|undefined";不能分配给类型";任何[]">
代码
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:您可以检查未定义,如下所示:
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 = [];
我相信还有很多方法可以解决这个问题。但这3个是我个人经验中最常用的。
优点是你不必禁用像";严格的";您的项目在全球范围内。
重点是使用更严格的强类型模型进行开发,而不是通过";降低杆";在打字稿上。