我有一个泛型函数
function test<T>(a: string, b: T, c: number)
但是我希望参数是一个单独的对象
function test(params: {a: string; b: T, c: number})
我知道我可以把一个对象变成这样
type MyObject<T> = {a: string; b: T, c: number}
但是当我使用该类型作为参数时,我不知道如何处理T
function test(params: MyObject<T>) // Where do I define T?
我的想法是以某种方式“解构”params类型,以便typescript知道哪个参数是泛型的,但我无法让它工作
function test<{_, T, __}>(params: MyObject<T>) // Does not work as intended
谢谢。
1条答案
按热度按时间vpfxa7rd1#
你几乎已经做到了,你只需要把函数定义中的泛型语法(
<T>
)和参数列表结合起来,只有b
属性改变了,所以{a: string; b: T, c: number}
就足够了-string
和number
用于其他属性就可以了。