原代码:
// this.warmResult$ = this.service.ctsMachine.maintainance.warmUp.events$.pipe(
// filter(
// (event: any) =>
// event.hasOwnProperty('__typename') &&
// event.__typename === warmUp.CTWarmUpMessageTypes.CTWarmUpResult,
// ),
// );
this.warmProgressEvents$=this.service.ctsMachine.warmUp.events$.pipe(
filter(x=>x.__typename===warmUp.CTWarmUpMessageTypes.CTWarmUpProgress),
map(x=>(x as warmUp.CTWarmUpProgress).progress)
);
修改后:
export function messageOfType<T extends { __typename: string }, U extends T>(
source: Observable<T>,
typename: U['__typename'],
): Observable<U> {
return source.pipe(filter((x): x is U => x.__typename === typename));
}
warmResult$ = messageOfType<WarmUpEvent, warmUp.WarmUpResult>(
this.machineService.ctsMachine.warmUp.events$,
warmUp.WarmUpMessageTypes.WarmUpResult
).pipe(map(x => x.result));
放入messageOfType中处理