TypeScript如何提取两个已有interface的id类型合并为新interface?
实现方案
完全可以实现,你只需要使用 TypeScript 内置的索引访问类型(Indexed Access Types) 语法调整写法即可。
你示例中的点语法是错误的,TS 中提取接口指定属性的类型需要用接口名['属性名']的格式,正确的接口定义如下:
interface ILaserIdAndIOpticalUnitId { laserId: ILaser['id']; opticalHeadUnitId: IOpticalHeadUnit['id']; }
效果说明
- 该定义完全复用了已有两个接口的
id类型,不需要额外维护重复的枚举值 - 后续你给
ILaser或者IOpticalHeadUnit的id新增/删除枚举值时,该接口的类型会自动同步更新,不需要修改多处代码 - 可以直接解决你遇到的类型报错问题,后续传入参数不符合id枚举范围时TS会自动给出类型提示
内容的提问来源于stack exchange,提问作者Meyer Buaharon
相关产品推荐
相关产品推荐

