首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么我不能在Typescript和RXJS管道中使用扩展运算符?

为什么我不能在Typescript和RXJS管道中使用扩展运算符?
EN

Stack Overflow用户
提问于 2021-07-14 02:05:41
回答 1查看 295关注 0票数 1

给定如下代码:

代码语言:javascript
运行
复制
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);会让我

代码语言:javascript
运行
复制
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时,我的所有代码都可以正常运行。我在理解这里的错误时遇到了困难。

EN

回答 1

Stack Overflow用户

发布于 2021-07-14 03:20:15

我记得看到有人在使用pipe()中的扩展运算符时遇到了问题,但我找不到问题所在。请查看此GitHub issue https://github.com/ReactiveX/rxjs/issues/3989以获取更多信息。

无论如何,我认为目前最好的方法是使用来自rxjs包的pipe函数(我现在不是在谈论Observable.pipe() ):

代码语言:javascript
运行
复制
import { pipe as pipeFromArray, of } from 'rxjs';

...

const operators = [
  map(...),
  filter(...),
  tap(...),
];

const source = of('World').pipe(pipeFromArray(...operators));

现场演示:https://stackblitz.com/edit/rxjs-ggiquc

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68367412

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档