从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))
游乐场在这里