typescript - 我有两个接口,我只想合并接口的 id
问题描述
我正在尝试更新嵌套在对象数组中的属性,并且该对象具有另一个对象数组。为了更新属性,我需要两个数组的 ID(或索引)来更新属性。所以我创建了接口:
export interface ILaser {
id: 'L1' | 'L2' | 'L3' | 'L4' | 'L5' | 'L6';
name:
| 'Laser #1'
| 'Laser #2'
| 'Laser #3'
| 'Laser #4'
| 'Laser #5'
| 'Laser #6';
switchMode: Number;
pulseWidth: Number;
power: Boolean;
}
export interface IOpticalHeadUnit {
id: 'OHU1' | 'OHU2' | 'OHU3';
name:
| 'Optical Head Unit #1'
| 'Optical Head Unit #2'
| 'Optical Head Unit #3';
lasers: Array<ILaser>;
}
我想更新光学头单元内的激光功率。我创建了一个函数来获取两个 ID 并更新电源,但我现在需要创建第三个接口来纠正 ts 错误,但我只想要两个接口的 ID,所以如果我添加另一个激光或光学头单元,我不会t 必须在两个位置进行更新。
像这样的东西:
interface ILaserIdAndIOpticalUnitId{
laserId: ILaser.id;
opticalHeadUnitId: IOpticalHeadUnit.id;
是否可以在打字稿中完成?
解决方案
您需要使用方括号表示法,就像在普通 js 中一样:
export interface ILaser {
id: 'L1' | 'L2' | 'L3' | 'L4' | 'L5' | 'L6';
name:
| 'Laser #1'
| 'Laser #2'
| 'Laser #3'
| 'Laser #4'
| 'Laser #5'
| 'Laser #6';
switchMode: Number;
pulseWidth: Number;
power: Boolean;
}
export interface IOpticalHeadUnit {
id: 'OHU1' | 'OHU2' | 'OHU3';
name:
| 'Optical Head Unit #1'
| 'Optical Head Unit #2'
| 'Optical Head Unit #3';
lasers: Array<ILaser>;
}
interface ILaserIdAndIOpticalUnitId {
laserId: ILaser['id'];
opticalHeadUnitId: IOpticalHeadUnit['id']
}
推荐阅读
- python - 如何检测列表中的每个列表是否与其他列表重叠?
- c# - WPF DataGrid 列属性按列名
- python - 在嵌套的json文档中将字符串解析为dict
- javascript - 如何使用 Javascript 将 JSON 中的浮点值转换为小数点后两位
- html - puppeteer 图像中断问题
- r - NA 在 R 中的表现如何
- laravel - 从 Laravel 7 中的 URL 中删除 /public
- php - 在 laravel-spatie 包中添加额外字段的正确方法是什么?
- javers - Javers ~ 查询仓库的当前状态
- android - 嵌套协程:父协程调度器的类型