typescript 如何使对象函数参数的单个属性泛型化?

lf3rwulv  于 2022-12-19  发布在  TypeScript
关注(0)|答案(1)|浏览(133)

我有一个泛型函数

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

谢谢。

vpfxa7rd

vpfxa7rd1#

你几乎已经做到了,你只需要把函数定义中的泛型语法(<T>)和参数列表结合起来,只有b属性改变了,所以{a: string; b: T, c: number}就足够了-stringnumber用于其他属性就可以了。

function test<T>(params: {a: string; b: T, c: number}) {
    
}

相关问题