Angular Typescript是否将接口描述的类型转换为另一种类型?
我知道类型的存在是有原因的 但是我的同事们想把我的一个组件中泄漏的抽象隐藏起来。 我正在使用一个大的配置界面来保存我的主要组件工作所需的所有信息,其中一个属性是数组或可列出的元素,它们将形成一个multiselect。 基本上,我的数组的类型如下:Angular Typescript是否将接口描述的类型转换为另一种类型?,angular,typescript,interface,casting,type-conversion,Angular,Typescript,Interface,Casting,Type Conversion,我知道类型的存在是有原因的 但是我的同事们想把我的一个组件中泄漏的抽象隐藏起来。 我正在使用一个大的配置界面来保存我的主要组件工作所需的所有信息,其中一个属性是数组或可列出的元素,它们将形成一个multiselect。 基本上,我的数组的类型如下: export interface Column { label: string; property: string; } 但我们使用的是第三方,它只接受自己的类型化数组作为选项。比如: export interface IMultiSele
export interface Column {
label: string;
property: string;
}
但我们使用的是第三方,它只接受自己的类型化数组作为选项。比如:
export interface IMultiSelectOption {
id: any;
name: string;
disabled?: boolean;
isLabel?: boolean;
parentId?: any;
params?: any;
classes?: string;
image?: string;
}
在我们的例子中,id->property
,和name->label
。
但是
为了使select选项正常工作,需要使该键值对正常工作
如何将我们自己的类型转换为预期的multiselect工作类型?我不能仅仅将另一个列表列为typeimultilselectoption
b/c,这样就不能解决泄漏的抽象问题。
我无法在我的接收组件中转换它,在接收组件中所有的魔法都发生了(基本上这是隐藏所有魔法的帷幕)b/c类型
列[]
道具在类型IMultiselectOption[]
上不存在。在我的情况下,我还必须对相同的数据使用多个类型,但对于前端和后端的使用,其表现/组织方式有所不同
我只是有一个助手服务转换,在这里我像这样转换我的对象:
ColumnToIMultiSelectOption(column: Column): IMultiSelectOption {
return <IMultiSelectOption>{
id: column.property,
name: column.label,
}
}
ColumnToIMultiSelectOption(列:column):immultiselectoption{
返回{
id:column.property,
名称:column.label,
}
}
通过将第三方组件嵌入到另一个助手组件中来解决此问题。通过这种方式,我可以操纵数据并根据multiselect组件的需要对其进行调整。
多亏了@Eliseo,这个想法才是赢家
没什么特别的。只有一个3输入1输出组件发出更改,然后在消费组件中侦听这些更改。您是否想过创建一个自定义表单控件来“屏蔽”multiselect组件?@Eliseo仅仅为了这个目的将组件捆绑到自定义表单控件中不是多余的吗?我的另一个想法是使用getter在选项中转换列,然后在(更改)中转换列您需要转换结果来更改列。问题是,我必须通过正在使用的配置交付修改后的类型,因为它与列绑定,所以我想我不能真正进行这样的更改。