Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Typescript 在同一对象的另一个属性中使用推断的属性类型_Typescript - Fatal编程技术网

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

是否可以在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

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奇怪的是,你可以这样做,但不能使用函数类型()实际上,唯一的限制是参数类型。返回类型工作正常。()