在Typescript中,可以使用泛型和条件类型来避免在类型数组上重复相同的属性。
一种常见的方法是使用keyof
和Exclude
类型操作符。首先,使用keyof
获取类型数组中所有元素的属性名的联合类型。然后,使用Exclude
排除掉重复的属性名。最后,使用泛型和条件类型来创建一个新的类型,该类型只包含不重复的属性。
以下是一个示例代码:
type UniqueProps<T extends { [key: string]: any }[]> = {
[K in keyof T[number]]: T[number][K];
};
// 示例使用
type Person = {
name: string;
age: number;
};
type Animal = {
name: string;
species: string;
};
type Car = {
brand: string;
color: string;
};
type UniquePersonProps = UniqueProps<[Person, Animal, Car]>;
// UniquePersonProps的类型为:{ name: string; age: number; species: string; brand: string; color: string; }
在上面的示例中,UniqueProps
是一个泛型类型,它接受一个类型数组作为参数。通过keyof T[number]
获取类型数组中所有元素的属性名的联合类型。然后,通过条件类型和Exclude
排除掉重复的属性名。最后,返回一个新的类型,该类型只包含不重复的属性。
这样,我们就可以使用UniqueProps
来避免在类型数组上重复相同的属性。在示例中,UniquePersonProps
的类型包含了Person
、Animal
和Car
的所有属性,且没有重复的属性。
领取专属 10元无门槛券
手把手带您无忧上云