【发布时间】:2021-04-07 15:42:33
【问题描述】:
在 TypeScript 中,我可以像这样从泛型参数推断返回类型。当我使用位置参数时效果很好。
const handleAndReturnNumber = (n: number) => n
const handleAndReturnString = (n: number) => String(n)
const doSomething1 = <R extends (n: number) => ReturnType<R>>(handle: R) => handle(2)
doSomething1(handleAndReturnNumber) // return type of function is number
doSomething1(handleAndReturnString) // return type of function is string
但是,当我使用“命名参数”时,即函数只接受一个参数并且它的类型是对象,我不知道如何才能获得与上述代码相同的结果。 TS里面可以吗?
const doSomething2 = ({handle}: {handle: Function /* ? how to infer return type here? */ }) => handle(2)
doSomething1({handle: handleAndReturnNumber}) // return type of function should be number
doSomething1({handle: handleAndReturnString}) // return type of function should be string
【问题讨论】:
标签: typescript