TypeScript:有没有办法用Generics来实现道具传播之类的东西



我有一个接口Foo

interface Foo<T, K, U> {
// omit implementation details
}

它需要3个通用参数。。。所以每当我需要使用这个接口时,我都需要明确地将3种类型传递给它的通用接口。我想知道是否有一种方法可以定义一个新的类型来分组3个类型,然后我们将一个分组的类型传递给这个泛型,这样它就可以将一个类型而不是3个类型传递给它的泛型接口。或者,我们可以将类型展开,这样它就填充了通用接口的3个插槽。

你可以试试这个:

interface Foo<T extends { first: any, second: any, third: any }> {
property1: T['first']
property2: T['second']
property3: T['third']
}
const bar: Foo<{ 
first: string, 
second: number, 
third: boolean 
}> = {
property1: 'a',
property2: 1,
property3: true
}

或者使用元组:

interface Foo<T extends [any, any, any]> {
property1: T[0]
property2: T[1]
property3: T[2]
}
const bar: Foo<[string, number, boolean]> = {
property1: 'a',
property2: 1,
property3: true
}

最新更新