javascript - 为什么打字稿忽略变量类型?
问题描述
我声明了一个类型化变量,它应该保存服务获取的数据。但是,返回的数据与变量的类型不同,但变量仍然接受数据。
这是我的代码:
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[]>
推荐阅读
- c++ - 与模板括号相关的奇怪编译错误解释为运算符“>”
- python - Pyinstaller,运行时 tensorflow.contrib 延迟加载程序错误
- java - Spring 应用程序启动,但我总是看到“Whitelabel 错误页面”
- wordpress - @@History/@@scroll|# Cookie
- sybase - 在整个 Sybase 数据库中搜索一串数据
- types - 无法返回需要强制转换的类型 (F#)
- angular - 角度 - 可以在不同组件中使用相同的属性名称吗?
- azure - 使用本地 DNS 服务器的 Service Fabric VM 无法解析
- paypal - PayPal TLS 1.2 和 HTTP/1.1 升级问题
- python - Tensorflow:tf.train.Feature 错误“预期之一:字节”