设置任何类型的可重用组件都是一种很好的做法



我创建了一个可重用的组件,该组件采用 any 类型的元素列表。他处理这些元素,在按下按钮的情况下返回他得到的列表的状态。在这种情况下,我担心丢失打字。这是一个安全的解决方案吗?我希望该组件可重用。是否可以从任何类型动态转换为其他类型?

我尝试在集合 Input(( 中强制转换对象,但这是不可能的

export class ReusableTableComponent {
  @Input() list: any[];
  @Output() selectedItems: EventEmmiter = new EventEmmiter<any>;
  selectedItemsList: any[] = [];
  emitChanges() {
  this.selectedItems.emit(this.selectedItemsList)}
}

问题是,eventEmmiter 返回的对象类型而不是特定类型。

您可以使用泛型类型:

export class ReusableTableComponent {
  @Input() list: T[];
  @Output() selectedItems: EventEmmiter = new EventEmmiter<T>;
  selectedItemsList: T[] = [];
  emitChanges() {
  this.selectedItems.emit(this.selectedItemsList)}
}

在此处阅读有关 TypeScript 中泛型类型的更多信息:https://www.typescriptlang.org/docs/handbook/generics.html

是的,您可以在Typescript中使用动态类型

export class ReusableTableComponent<LIST, EVENTLIST> {
  @Input() list: LIST[];
  @Output() selectedItems: EventEmmiter = new EventEmmiter<EVENTLIST>;
  selectedItemsList: EVENTLIST[] = [];
  emitChanges() {
  this.selectedItems.emit(this.selectedItemsList)}
}

相关内容

最新更新