Typescript - 强制集合只包含2种类型

时间:2018-05-19 05:44:39

标签: typescript

我有一个Product接口,其属性items是一个集合,只能接受两种类型的项目:ServiceTypeOneServiceTypeTwo

这是我提出的,但我不确定这是否是正确的方法呢?

export interface Product{
   ...
   items: ProductItem<AcceptedServices>[];
   ...
}

export interface ProductItem<T extends AcceptedServices>{
   item:T;
   quantity:number;
}

export type AcceptedServices = ServiceTypeOne | ServiceTypeTwo;

问题:

  1. 有没有更好的方法可以让我失踪?
  2. 在我将迭代Product.items的后期阶段,我将要检查项目的特定类型(如果其基础类型为ServiceTypeOneServiceTypeTwo并且基于type为该类型运行一些特定的方法)。如何实现?

1 个答案:

答案 0 :(得分:3)

似乎在int main(){ hashtable *ht = create(); insert(ht, "James Bond", "zero7"); return 0; } 中使用泛型是没有意义的,您可以将其定义为:

ProductItem
  

我想检查项目的特定类型

您可以定义自定义type guards

export interface ProductItem {
    item: AcceptedServices;
    quantity: number;
}