首页 > 解决方案 > 在 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.listsList[]类型。定义属性的更好方法是什么,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)
            );
    }
}

标签: angulartypescript

解决方案


我认为语法是-

  map((res: <List[]>) => res.lists)

甚至您可以在映射时省略类型转换响应,当您已经在此处完成时this.http.get<List[]>...


推荐阅读