首页 > 解决方案 > 我有两个接口,我只想合并接口的 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;

是否可以在打字稿中完成?

标签: typescript

解决方案


您需要使用方括号表示法,就像在普通 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']
}

操场


推荐阅读