不能将类型"any [] | undefined"分配给类型"any []"



自从今天更新了我的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个是我个人经验中最常用的。

优点是你不必禁用像";严格的";您的项目在全球范围内。

重点是使用更严格的强类型模型进行开发,而不是通过";降低杆";在打字稿上。

相关内容

最新更新