Многоразовый компонент с установленным Input () любого типа является хорошей практикой? - PullRequest
2 голосов
/ 07 июня 2019

Я создал повторно используемый компонент, который принимает список элементов типа any. Он работает над этими элементами и в случае нажатия кнопки возвращает состояние полученного списка. Я боюсь потерять набор текста в этом случае. Это безопасное решение? Я хотел бы, чтобы компонент был многоразовым. Возможно ли динамическое приведение из любого типа к другому типу?

Я пытался привести объект в набор Input (), но это невозможно

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

  emitChanges() {
  this.selectedItems.emit(this.selectedItemsList)}

}

Проблема в том, что eventEmmiter возвращает тип объекта, а не определенный тип.

Ответы [ 2 ]

4 голосов
/ 07 июня 2019

Вы можете использовать универсальный тип:

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

1 голос
/ 07 июня 2019

да, вы можете использовать динамические типы в Typescript

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

  emitChanges() {
  this.selectedItems.emit(this.selectedItemsList)}

}
...