Typescript 在同一对象的另一个属性中使用推断的属性类型
是否可以在TypeScript中执行此操作 注意:任何属性名称在Typescript 在同一对象的另一个属性中使用推断的属性类型,typescript,Typescript,是否可以在TypeScript中执行此操作 注意:任何属性名称在props参数中都有效 type Values<T extends object> = Pick<T, Exclude<keyof T, 'onStart'>> declare function animate<T extends { onStart?: (values: Values<T>) => void }>(props: T): void anim
props
参数中都有效
type Values<T extends object> = Pick<T, Exclude<keyof T, 'onStart'>>
declare function animate<T extends {
onStart?: (values: Values<T>) => void
}>(props: T): void
animate({
foo: 100,
onStart(values) {
// $Expect(values == { foo: number })
}
})
类型值=拾取
声明函数animate void
}>(道具:T):无效
生动活泼({
傅:100,
onStart(值){
//$Expect(值=={foo:number})
}
})
哪种是推断的属性类型?例如,您是否试图确保
值
具有类型为number
的属性foo
?是的,$Expect
注释就是这么说的,我怀疑这是可能的。我知道我已经看到编译器不会同时推断类型参数并在上下文中应用推断出的参数。不过,我不知道是否有官方的说法。@jcalz奇怪的是,你可以这样做,但不能使用函数类型()实际上,唯一的限制是参数类型。返回类型工作正常。()哪个是推断的属性类型?例如,您是否试图确保值
具有类型为number
的属性foo
?是的,$Expect
注释就是这么说的,我怀疑这是可能的。我知道我已经看到编译器不会同时推断类型参数并在上下文中应用推断出的参数。不过,我不知道是否有官方的说法。@jcalz奇怪的是,你可以这样做,但不能使用函数类型()实际上,唯一的限制是参数类型。返回类型工作正常。()