javascript - 为什么 typescript 忽略变量类型?

标签 javascript angular typescript

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

这是我的代码:

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

最佳答案

您可以创建一个模型:

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[]>

关于javascript - 为什么 typescript 忽略变量类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57372106/

相关文章:

javascript - Angular 2 使用箭头函数订阅 vs 使用绑定(bind)命名函数变量

angular - 除了 app.component 的 ngOninit 之外,在哪里放置 api 调用以使系统等待响应返回并注入(inject)到主体中?

javascript - Express:为什么不能在router.use中使用req.body.value?

javascript - 如何在 vuex 中将 2 个参数传递给 getter?

javascript - polymer + requirejs : Attributes on were data bound prior to Polymer upgrading the element

css - 页脚与 iOS 设备上的登录表单重叠(Safari + Chrome)

typescript - 使用 Rxjs 6 在 Angular 6 中返回一个空/空的 Observable

javascript - 如何通过jquery从tr中获取第一个td文本

javascript - 当项目已被选中时,如何隐藏所选选项? Angular 6+

angular - ViewChildren 和 ContentChildren QueryLists 监听什么样的变化?