1 typescript typescript-generics
打字稿手册(https://www.typescriptlang.org/docs/handbook/2/generics.html#generic-constraints)这样描述了通用约束:
您可以声明一个受另一个类型参数约束的类型参数。
在这个人为的示例中,如何正确推断wrapp()的返回类型中的“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)
Run Code Online (Sandbox Code Playgroud)
TypescriptT在从这样的构造中进行推断时存在问题func<T, F extends (() => T)>。在这种情况下,通常最好依靠infer。对于您的示例,我们可以使用实用程序类型ReturnType,它在内部使用infer并完全满足我们的需要:
function wrap<F extends (() => any)>(cb: F): [ReturnType<F>, F] {
return [cb(), cb]
}
function load(): string {
return ''
}
const [
value, // string
wrapped, // () => string
] = wrap(load)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1236 次 |
| 最近记录: |