Я знаю, что типы существуют по причине.
Но мои коллеги хотели бы скрыть дырявую абстракцию, которая есть у меня в одном из моих компонентов.
Я использую большой интерфейс конфигурации для хранения всей информации, необходимой моему основному компоненту, и одно из свойств - это массив или списковые элементы, которые образуют множественный выбор.
В основном мой массив имеет такой тип:
export interface Column {
label: string;
property: string;
}
Но мы используем сторонний компонент multiselect , который принимает в качестве параметров только свой собственный типизированный массив. Как:
export interface IMultiSelectOption {
id: any;
name: string;
disabled?: boolean;
isLabel?: boolean;
parentId?: any;
params?: any;
classes?: string;
image?: string;
}
В нашем случае id -> property
и name -> label
.
Но!
Для того чтобы опция выбора работала, она должна иметь эти пары ключ-значение для работы.
Как я могу преобразовать наш собственный тип в тип ожидаемого мультиселекта для работы? Я не могу просто сделать еще один список типа IMultiselectOption
b / c, который бы не решил проблему с утечкой абстракции.
Я не могу преобразовать его в свой принимающий компонент, где происходит вся магия (в основном это занавес, который скрывает всю магию) б / к типа Column[]
реквизит не существует для типа IMultiselectOption[]