【发布时间】:2017-11-30 02:14:45
【问题描述】:
在我们的 Angular 4.2.4 应用程序中,我们在许多地方使用 RxJS 的 Observable.forkJoin 来返回异构类型。
例如:
private fleet: Aircraft[];
private contractList: string[];
Observable.forkJoin([
this.fleetService.getFleet(),
this.fleetService.getContractList()
]).subscribe(
next => {
this.fleet = results[0];
this.contractList = results[1];
},
error => console.error
);
具有以下服务签名:
getFleet(): Observable<Aircraft[]> { ... }
getContractList(): Observable<string[]> { ... }
更新到 TypeScript 2.4.1 后,tsc 现在抱怨 this.contractList 出现以下错误:
./app/fleet/fleetComponent.ts (xx,xx) 中的错误: 错误 TS2322:类型 'Aircraft[]' 不可分配给类型 'string[]'。
但我不想将Aircraft[] 分配给string[]。
所有我们实现的其他 Observable.forkJoin 也是如此:result[] 中的所有元素都被视为与 result[0] 相同的类型。
似乎与Error with Actions observable in @ngrx/effects using TypeScript 2.4.1 中的问题非常相似,但在tsconfig.js 的"compilerOptions" 中添加"noStrictGenericChecks": true, 并没有解决问题。
为什么会这样?我该如何解决这个问题?
【问题讨论】:
标签: typescript rxjs5 typescript2.4