从Typescript中的promise推断返回值

我有一个非常简单的函数,它接受两个参数——节点对象异步函数,它们以某种方式处理给定的节点并返回处理过的节点,它可以是任何东西。

我想让它通用并从异步函数推断类型。这是我的尝试,但 TS 在抱怨,我真的不明白为什么。

// ensure that callback is of a correct type
type NodeCallback<H> = H extends (node: Node) => Promise<infer R> ? (node: Node) => Promise<R> : never

// retrieve return value
type NodeCallbackReturnValue<H> = H extends (node: Node) => Promise<infer R> ? R : never


const myAsyncFunction = <_, C>(node: Node, cb: NodeCallback<C>) => {
  return cb(node)
}


myAsyncFunction(document, (node: Node) => Promise.resolve(node.nodeType))

游乐场在这里

以上是从Typescript中的promise推断返回值的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>