【发布时间】:2021-06-23 15:07:06
【问题描述】:
打字稿手册 (https://www.typescriptlang.org/docs/handbook/2/generics.html#generic-constraints) 对通用约束进行了说明:
你可以声明一个受其他类型约束的类型参数 参数。
在这个人为的例子中,我怎样才能正确推断 wrap() 的返回类型中的“T”?
function wrap<T, F extends (() => T)>(cb: F): [T, F] {
return [cb(), cb]
}
function load(): string {
return ''
}
const [
value, // unknown, should be string. Can I get typescript to infer this?
wrapped, // () => string
] = wrap(load)
【问题讨论】:
-
通用
T真的有必要吗?你可以使用ReturnType<F>link -
我认为最简单的表达方式是
function wrap<T>(cb: () => T): [T, () => T] { return [cb(), cb] }。
标签: typescript typescript-generics