Angular 指定角度组件中泛型变量的类型

Angular 指定角度组件中泛型变量的类型,angular,typescript,Angular,Typescript,我正在尝试创建一个通用组件,该组件只能使用两种类型的数据: interface X{ name: string, path: string, type: string, } interface Y{ name: string, path: string, } 两种类型X、Y都有两个公共属性,而X有一个额外属性。 现在,我以这种方式定义类型: export class MyComponent<T extends X | Y> implemen

我正在尝试创建一个通用组件,该组件只能使用两种类型的数据:

interface X{
    name: string,
    path: string,
    type: string,
}

interface Y{
    name: string,
    path: string,
}
两种类型X、Y都有两个公共属性,而X有一个额外属性。 现在,我以这种方式定义类型:

export class MyComponent<T extends X | Y> implements OnInit{
    @Input() data: T[];
    func(item: T){
        let temp = this.data.find(x => x.name === item.name);
        <<....some code....>>
    }
}
<my-component [data]="xList"></my-component>     <!-- xList: X[] -->
<my-component [data]="yList"></my-component>     <!-- yList: y[] -->
导出类MyComponent实现OnInit{
@输入()数据:T[];
func(项目:T){
让temp=this.data.find(x=>x.name==item.name);
}
}
通过以下方式从父组件调用此函数:

export class MyComponent<T extends X | Y> implements OnInit{
    @Input() data: T[];
    func(item: T){
        let temp = this.data.find(x => x.name === item.name);
        <<....some code....>>
    }
}
<my-component [data]="xList"></my-component>     <!-- xList: X[] -->
<my-component [data]="yList"></my-component>     <!-- yList: y[] -->

这很好,但我不确定这是否是正确的方法。有谁能建议这里最好的方法吗? 我们可以在Typescript中编写类似于
的东西,其中T实现了X | Y


或者我应该只使用
@Input()data:any[]

我认为这很好,但我会做
T扩展Y
只是因为
type
键在X上是额外的,如果我们给它输入Y类型数组,这个组件就会断开,组件会把
type
键弄乱。

我不认为角度框架在它实例化MyComponent。我能想到的唯一一件事是在运行时获取组件的实例,并尝试自己设置泛型类型,这将产生任何差异,因为
MyComponent
将已经实例化,并且将设置
@Input()数据


我认为您应该只编写
@Input()data:X[]| Y[]

不,此组件不使用类型键。
@Input()data:X[]| Y[]
将导致
此.data.find中的错误(X=>X.name==item.name)