我希望创建一个通用接口,其中包含表示其他接口属性的联合属性。
假设我有两个接口:
interface A {
something: string;
somethingElse: number;
}
interface B {
something: Array<string>;
}
我不想以以下方式编写C
界面:
interface C {
something: string | Array<string>;
somethingElse?: number;
}
因为这意味着每当我修改接口A或B中的任何一个时,都需要手动修改接口C。根据我在TypeScript文档以及Stack Overflow上看到的答案,我应该声明一个新类型。
type unionOfKeys = keyof A | keyof B;
实现通用接口表单
interface GenericInterface {
<T>(arg: T): T;
}
我正在考虑的方向是:
interface C {
<T extends unionOfKeys>(arg: T): T extends unionOfKeys ? A[T] | B[T] : any
}
但是由于多个属性及其类型之间的不匹配,该方法失败了。
我将非常感激任何形式的帮助。谢谢。