angular - 在 Typescript 中定义一个属性以防止 Angular 中的编译错误
问题描述
export class ListService {
...
getAllLists(): Observable<List[]> {
let URI = `${this.serverApi}/bucketlist/`;
return this.http.get<List[]>(URI)
.pipe(
map(res => <List[]>res.lists)
);
}
}
编译时ng serve
显示如下错误
error TS2339: Property 'lists' does not exist on type 'List[]'.
众所周知,res.lists
是List[]
类型。定义属性的更好方法是什么,res
以便代码编译时不会出错?
这是一个res
样本
{
"success": true,
"lists": [
{
"_id": "5c6673abeb64adb41ec6dfaf",
"title": "First Project"
}
]
}
尝试的解决方案
interface Response {
success: boolean;
lists: List[];
}
export class ListService {
getAllLists(): Observable<List[]> {
...
return this.http.get<Response>(URI)
.pipe(
map(res => res.lists)
);
}
}
解决方案
我认为语法是-
map((res: <List[]>) => res.lists)
甚至您可以在映射时省略类型转换响应,当您已经在此处完成时this.http.get<List[]>...
推荐阅读
- javascript - Node.js 同步排队大量任务
- c++ - 在网格中找到最短路径的算法
- java - 实现一个具有动态生成属性的可排序类
- c++ - 致命错误:特征/密集:VSC 中没有这样的文件或目录
- django - Django 发出信号如何正确连接发送者和接收者
- php - 安装 laravel bootstrap 时的 npm 警告
- javascript - 如何记录嵌套在数组内的数组中的对象属性?
- python - Keras 模型始终低估目标
- javascript - 在 contenteditable 中禁用 Shift-Enter
- django - Django:解包的值太多(预期 2)