【发布时间】:2018-09-19 03:04:25
【问题描述】:
我有以下几种:
export type SchemaEntry<A extends object, B> =
| Validator<B>
| ((obj: A) => Validator<B>);
export type Schema<A extends object> = { [k in keyof A]: SchemaEntry<A, A[k]> };
以及使用它们的函数:
function foo<A extends object>(f: Schema<A>): A {
return undefined as any;
}
我的问题是当我调用函数时:
const a = foo({
b: new Validator<number>(),
c: (o) => new Validator<number>()
});
o 的类型在这种情况下将是 any,而不是我预期的 {b: number, c: number}。
但是a 确实收到了正确的类型,{b: number, c: number}。
有没有一种方法可以帮助 typescript 推断我的匿名函数的类型?
【问题讨论】:
-
这里有一个answer to a similar question,它说明了它为什么不起作用:如果它需要推断的类型是泛型或依赖于泛型参数,则无法进行函数参数推断。
-
谢谢。希望我能以同样的方式解决它! :(
标签: typescript generics types type-inference