【问题标题】:'Observable<Object>' is not assignable to type 'Observable<{ user: any; }>''Observable<Object>' 不可分配给类型 'Observable<{ user: any; }>'
【发布时间】:2018-07-20 14:01:51
【问题描述】:

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

 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');
}

我得到的只是以下错误:

类型 'Observable' 不可分配给类型 'Observable'。类型“对象”不可分配给类型“{ 文章:任何; }'。

【问题讨论】:

    标签: angular typescript http observable


    【解决方案1】:

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

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

    Documentation

    【讨论】:

      【解决方案2】:

      。您是否尝试过类似的方法:

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

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

      【讨论】:

        【解决方案3】:

        你也可以这样定义一个泛型对象:

        {[key: string]: string}
        

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

        {[key: string]: any}
        

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

        【讨论】:

          猜你喜欢
          • 2018-08-14
          • 2018-08-30
          • 2023-04-10
          • 2017-08-12
          • 2020-05-28
          • 2018-03-09
          • 2018-04-19
          • 1970-01-01
          • 2020-11-23
          相关资源
          最近更新 更多