type t = {
a:{
c:number
},
b:{
d:boolean
}
//...
}
function f1<Section extends {[key:string]:{}},Key extends string>(param1:Key,param2:Section[Key]){}
f1<t,'a'>('a',{c:1})
我将在Section
和Key
泛型类型之间指定一种关系,以使Key
是keyof T
(就像我所做的那样)但是让打字稿从用户指定的第一个参数开始输入Key
类型。
因此,我想改写这一行:
f1<t>('a',{c:1})
我该怎么做才能使其正常工作?
答案 0 :(得分:2)
不幸的是,在让编译器推断其余参数时,您不能仅指定一些类型参数,这是不支持的(有人提议支持部分参数推断,但似乎它不会像现在这样时间很快)。
做事的唯一方法是使用咖喱函数方法:
type t = {
a: {
c: number
},
b: {
d: boolean
}
//...
}
function f1<Section extends { [key: string]: {} }>() {
return function <Key extends string>(param1: Key, param2: Section[Key]) { }
}
f1<t>()('a', { c: 1 })