首页 > 解决方案 > 为什么打字稿忽略变量类型?

问题描述

我声明了一个类型化变量,它应该保存服务获取的数据。但是,返回的数据与变量的类型不同,但变量仍然接受数据。

这是我的代码:

Data: Array<{Currency: string, Rate: number}>;

getData(): void {
  this.DataService.getAll().subscribe(
    (res: Array<any>) => {
      this.Data = res;
    },
    (err) => {
      console.log(err);
    }
  );
}

我尝试了以下方法,但仍然无法正常工作:

res: Array<{Currency: string, Rate: number}>

更新

这是我的服务

getAll(): Observable<Array<{Currency: string, Rate: number}>> {
    return this.http.get(`${this.baseUrl}/data`).pipe(
      map((res) => {
        this.data = res['data'];
        return this.data;
    }),
    catchError(this.handleError));
  }

更新 2

我在这里发现了类似的问题:https ://github.com/angular/angular/issues/20770

标签: javascriptangulartypescript

解决方案


您可以将模型创建为:

export interface CurrencyModel {
  Currency: string,
  Rate: number
}

然后使用此模型作为响应:

Data: CurrencyModel[];

getData(): void {
  this.DataService.getAll().subscribe(
    (res: CurrencyModel[]) => {
      this.Data = res;
    },
    (err) => {
      console.log(err);
    }
  );
}

getAll应该返回Observable<CurrencyModel[]>


推荐阅读