繁体   English   中英

Typescript将接口描述的类型转换为另一种类型?

[英]Typescript convert a type described by an Interface to another?

我知道类型存在是有原因的。

但我的同事们想要隐藏我在其中一个组件中的漏洞抽象。 我使用一个大的配置接口来保存我的主要组件需要工作的所有信息,其中一个属性是一个数组或可列表元素,它们将构成一个多选。 基本上我的数组有这样的类型:

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 -> propertyname -> label 但! 为了使select选项起作用,它需要使这个键值对起作用。

如何将我们自己的类型转换为预期的多选项类型? 我不能只将另一个列表作为类型IMultiselectOption b / c来解决漏洞抽象问题。 我不能在我的接收组件中转换它所有的魔法发生(基本上这是隐藏所有魔法的窗帘)b / c类型Column[]道具不存在类型IMultiselectOption[]

在我的情况下,我还必须使用几种类型的相同数据,但代表/组织不同的前端和后端使用。

我只是有一个帮助服务转换,我转换我的对象,如下所示:

ColumnToIMultiSelectOption(column: Column): IMultiSelectOption {
   return <IMultiSelectOption>{
      id: column.property,
      name: column.label,
   }
}

通过将第三方组件嵌入到另一个帮助程序组件中来解决该问题。 通过这种方式,我可以操作数据并在多选组件需要时对其进行调整。 感谢@Eliseo这个想法是赢家。

没有什么花哨。 只有3输入1输出组件发出更改然后在消费组件中监听它们。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM