'Observable <object>'不可分配给'Observable <{用户:任何; }>'

时间:2018-07-20 14:01:52

标签: angular typescript http observable

我正在研究一个文章项目,其中一个服务具有此功能:

 query(config: ArticleListConfig): Observable<{articles: Article[], articlesCount: number}> {

    const params = {};

    Object.keys(config.filters)
    .forEach((key) => {
      params[key] = config.filters[key];
    });

    return this.apiService
    .get(
      '/articles' + ((config.type === 'feed') ? '/feed' : ''),
      new HttpParams({ fromObject: params })
    );
  }

所以我以为它返回了一个可观察对象,但是无论我做什么,它一直不接受返回格式:

  query(): Observable<{user: any}>{

  return this.http.get('../../assets/data.json');
}

我得到的是以下错误:

  

类型“可观察”不能分配给类型“可观察<”   文章:任何; }>'。类型“对象”不可分配给类型“ {   文章:任何; }'。

3 个答案:

答案 0 :(得分:1)

您需要告诉HttpClient它会得到什么

return this.http.get<{user: any}>('../../assets/data.json');

Documentation

答案 1 :(得分:0)

。您是否尝试过类似的操作

导致新的HTTPCLIENT直接将您的JSON响应强制转换为您传递的类型(或发布或放置等方法)

 query(): Observable<{user: any}>{

  return this.http.get<{user: any}>('../../assets/data.json');
}

答案 2 :(得分:0)

您还可以通过以下方式定义通用对象:

{[key: string]: string}

或者,如果它将包含不同于字符串的其他值:

{[key: string]: any}

如果响应可以是任何类型,则可以使用any