首页 > 解决方案 > 创建一个具有某些特定接口的通用类型接口

问题描述

我真的不知道在谷歌上搜索这个的术语,所以它可能会被重复。

我有一个看起来像的界面

export interface SolidOptions<T>  {
  position: Cartesian3;
  options?: T;
}

现在,我希望这个 T只有3 种类型: CylinderOptions | 矩形选项 | 多边形选项

想要这个解决方案:

export interface SolidOptions<T>  {
  position: Cesium.Cartesian3;
  options?: CylinderOptions | RectangleOptions | PolygoneOptions;
}

我想使用它的原因如下:

    static generateCylinder = (options: SolidOptions<CylinderOptions>)=>  {
    }
    
    static generateRectangle = (options: SolidOptions<RectangleOptions >)=>  {
    }

    static generatePolygon = (options: SolidOptions<PolygoneOptions>)=>  {
    }

并且没有能力将错误的类型传递给错误的函数。

标签: typescript

解决方案


您可以在泛型类型参数上定义约束:

export interface SolidOptions<T extends CylinderOptions | RectangleOptions | PolygoneOptions> {
  position: Cartesian3;
  options?: T;
}

推荐阅读