在我們的角度4.2.4應用程序中,我們在許多地方使用RxJS的Observable.forkJoin
來返回異構類型。Observable.forkJoin更新到TypeScript 2.4.1和Rxjs後的TS2322錯誤5.4.2
例如:
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[]> { ... }
更新現在打字稿2.4.1,tsc
後與以下錯誤抱怨爲this.contractList
:
錯誤在./app/fleet /fleetComponent.ts(xx,xx): 錯誤TS2322:類型'Aircraft []'不能分配給'string []'類型。
但我並不想將Aircraft[]
分配給string[]
。
同樣是真實的所有其他Observable.forkJoin
我們實現了:就好像它們是同一類型result[0]
在result[]
所有元素進行處理。
它似乎與Error with Actions observable in @ngrx/effects using TypeScript 2.4.1中的問題非常相似,但是向tsconfig.js的"compilerOptions"
添加"noStrictGenericChecks": true,
並未解決問題。
這是怎麼發生的?我怎樣才能解決這個問題?
太棒了!我甚至不知道你可以將一個列表傳遞給'forkJoin()'。這確實解決了這個問題,並且我很欣賞'tuple'的解釋。 – msanford