Я пытаюсь создать общий c компонент, который может ожидать данные только двух типов:
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[] -->
Это работает нормально, но я не уверен, что это <T extends X | Y>
правильный способ сделать это или нет. Кто-нибудь может предложить лучший подход здесь? Можем ли мы написать что-то вроде where T implements X | Y
в Typescript?
Или я должен просто использовать @Input() data: any[];
?