给定如下代码:
const pipeMethods: OperatorFunction<any, any>[] = [];
return of(req).pipe(...pipeMethods);
我收到一个错误,显示为A spread argument must either have a tuple type or be passed to a rest parameter
相反,做return of(req).pipe.apply(null, pipeMethods);
会让我
Argument of type 'OperatorFunction<any, any>[]' is not assignable to parameter of type '[op1: OperatorFunction<AjaxConfig, unknown>, op2: OperatorFunction<unknown, unknown>, op3: OperatorFunction<unknown, unknown>, op4: OperatorFunction<unknown, unknown>, op5: ... 5 more ..., op6: OperatorFunction<...>]'.
在使用ts-ignore
时,我的所有代码都可以正常运行。我在理解这里的错误时遇到了困难。
发布于 2021-07-14 03:20:15
我记得看到有人在使用pipe()
中的扩展运算符时遇到了问题,但我找不到问题所在。请查看此GitHub issue https://github.com/ReactiveX/rxjs/issues/3989以获取更多信息。
无论如何,我认为目前最好的方法是使用来自rxjs
包的pipe
函数(我现在不是在谈论Observable.pipe()
):
import { pipe as pipeFromArray, of } from 'rxjs';
...
const operators = [
map(...),
filter(...),
tap(...),
];
const source = of('World').pipe(pipeFromArray(...operators));
https://stackoverflow.com/questions/68367412
复制相似问题