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

Typescript-强制集合仅包含2种类型,typescript,Typescript,我有一个产品界面,该界面具有属性项,该集合应只接受两种类型的项:服务类型一和服务类型二 这就是我想到的,但我不确定这是否是正确的方法 export interface Product{ ... items: ProductItem<AcceptedServices>[]; ... } export interface ProductItem<T extends AcceptedServices>{ item:T; quantity:numb

我有一个
产品
界面,该界面具有属性
,该集合应只接受两种类型的项:
服务类型一
服务类型二

这就是我想到的,但我不确定这是否是正确的方法

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

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

export type AcceptedServices = ServiceTypeOne | ServiceTypeTwo;
导出接口产品{
...
项目:产品项目[];
...
}
导出接口ProductItem{
项目:T;
数量:数量;
}
导出类型AcceptedServices=ServiceTypeOne | ServiceTypeTwo;
问题:

  • 有没有更好的方法让我错过
  • 在稍后的阶段,当我将迭代
    Product.items
    时,我将要检查项目的特定类型(如果其基础类型是
    ServiceTypeOne
    serviceTypeotwo
    ,并基于类型为该类型运行一些特定方法)。如何做到这一点

  • 似乎在
    ProductItem
    中使用泛型没有意义。您可以将其定义为:

    export interface ProductItem {
        item: AcceptedServices;
        quantity: number;
    }
    
    我想检查项目的特定类型

    您可以定义自定义:


    似乎在
    ProductItem
    中使用泛型没有意义。您可以将其定义为:

    export interface ProductItem {
        item: AcceptedServices;
        quantity: number;
    }
    
    我想检查项目的特定类型

    您可以定义自定义:


    使用泛型的唯一原因是在接口级别指示可接受的类型。我在文档中看到过这一点,并且喜欢这个想法这与类型的后卫是伟大的。谢谢使用泛型的唯一原因是在接口级别指示可接受的类型。我在文档中看到过这一点,并且喜欢这个想法这与类型的后卫是伟大的。谢谢