【问题标题】:Http observable response parse into arrayHttp 可观察响应解析为数组
【发布时间】:2019-08-10 09:54:56
【问题描述】:

刚开始使用 Angular(版本 7)。我尝试从待办事项数组 json-placeholder 获得响应。那应该返回一个数组,但是当我 console.log(typeof rsp) 它显示一个对象。

可观察:

url: string = 'https://jsonplaceholder.typicode.com/todos';

getHomeTodos() {
    return this.http.get(this.url);
}

我的组件中的观察者:

ngOnInit() {
this.todosService.getHomeTodos()
    .subscribe((rsp) => {
      this.homeTodos = rsp;
    });
}

任何想法为什么 rsp 的类型是“对象”但在 json-placeholder 上它显示它返回一个数组?谢谢。

【问题讨论】:

  • 数组也是一个对象
  • 试试console.log(typeof []);:你也会得到对象。数组就是一个对象。
  • 那么我怎样才能在返回的对象上使用像 splice 这样的方法呢?
  • @Fishlex : 当然,(rsp: any[])
  • 正是我想要的。谢谢普拉纳夫。我认为我应该更多地关注打字稿。

标签: angular rxjs observable


【解决方案1】:

那么我怎样才能在返回的对象上使用像 splice 这样的方法呢?

我想我明白你的问题了。您需要在 getgetHomeTodos 中指定返回类型,以便添加类型安全性,IDE 可以建议类型上的方法/成员,例如数组上的拼接。

export interface IToDo { /* members here */ }
url: string = 'https://jsonplaceholder.typicode.com/todos';
getHomeTodos():Observable<IToDo[]> {
    return this.http.get<IToDo[]>(this.url);
}
homeTodos: IToDo[];
ngOnInit() {
  this.todosService.getHomeTodos()
    .subscribe((rsp) => {
      this.homeTodos = rsp;
    });
}

这增加了类型安全性,现在您可以使用 splice 或其他 Array 原型成员。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-25
    • 1970-01-01
    • 2019-06-04
    • 2021-05-18
    相关资源
    最近更新 更多