typescript 如何为非标准输入/输出中间件创建类型[已关闭]

bxgwgixi  于 2023-04-07  发布在  TypeScript
关注(0)|答案(1)|浏览(117)

已关闭,该问题需要details or clarity,目前不接受回答。
**想要改进此问题?**通过editing this post添加详细信息并澄清问题。

6天前关闭
这篇文章是编辑并提交审查4天前.
Improve this question

async function resolver(params, ...middlewares) {
  let data = await someFunction(params)

  for (const middleware of middlewares) {
    data = await middleware(data)
  }

  return data
}

我需要以这样一种方式来实现这个函数,即我可以传递任何数量的中间件,并且它们接受先前中间件的输出作为其输入,其中第一个中间件将接受从someFunction返回的data这些中间件没有相同的返回类型。然后middleware2将接受Tres1作为它的输入,并给予TRes2类型的数据,依此类推,resolver将输出TResN,其中middlewaren将是阵列中的最后一个中间件。

zphenhs4

zphenhs41#

async function someFunction(params: string) {
    console.log(params);
    return 1
}

async function resolver(params: string, ...middlewares: ((p: number) => Promise<number>)[]) {
  let data = await someFunction(params)

  for (const middleware of middlewares) {
    data = await middleware(data)
  }

  return data
}

async function a(p: number) {
    return 1;
}

async function b(p: number) {
    return 1;
}

resolver('hi', a, b)

类似这样的东西应该可以工作,你实际上是在输入middlewares作为一个函数数组。
见tsPlayground

相关问题