【发布时间】:2020-07-24 10:09:50
【问题描述】:
在下面的 sn-p 中,尽管有一个参数隐式键入为 any,但 typescript 不会发出任何错误。
declare function constrainedHOF<T extends (...args: any[]) => any>(callback: T): T;
// x is implicitly any, but typescript does not complain
const hof = constrainedHOF(x => {
console.log(x);
});
我的猜测是问题出在类型约束T extends (...args: any[]) => any,这使得打字稿认为它是一个显式的any。
如何正确解决这个问题,既保持泛型类型约束为“任何类型的函数”,又让打字稿在遇到constrainedHOF 内的意外无类型回调时抱怨隐式any?
在最新的稳定版 Typescript 3.9.2 中测试。
我准备了一个 Playground Link 来演示问题,包括检查问题是否真的与通用约束有关。
【问题讨论】:
标签: typescript typescript-generics