【发布时间】:2018-06-16 11:50:22
【问题描述】:
为什么会报错?
type MyType = {
a: string, b: string
}
function cantInfer<In, Out>(fn: (i: In) => Out, i: In) {
}
function myFunction<K extends keyof MyType>(key: K): string {
return '';
}
cantInfer(myFunction, 'a');
但这不是:
type MyType = {
a: string, b: string
}
function cantInfer<In, Out>(fn: (i: In) => Out, i: In) {
}
function myFunction(key: keyof MyType): string {
return '';
}
cantInfer(myFunction, 'a');
注意,myFunction 中缺少的<K extends keyof MyType>
【问题讨论】:
-
问题是它无法推断出 K,因为它根本没有用在 myFunction 的参数和返回值中。你试过
function myFunction<K>(key: K): string -
刚刚更新为更好的示例。感谢您指出这一点。
标签: typescript