代码之家  ›  专栏  ›  技术社区  ›  Ilja

将必需的接口字段扩展到另一个接口,但使所有子字段都是可选的

  •  0
  • Ilja  · 技术社区  · 5 年前

    我有两个接口:

    interface BattleSkills {
      strength: number;
      armor: number;
      magic_resistance: number;
      health: number;
      mana: number;
      intelligence: number;
      accuracy: number;
      agility: number;
      critical_damage: number;
    }
    

    interface Item {
      id: string;
      name: string;
      price: number;
      stats: BattleSkills;
    }
    

    目前 Item['stats'] 需要来自的所有字段 BattleSkills . 我怎么能调整这个来保持 stats 字段是必需的,但它的所有子字段都是可选的?最好不要在 战斗技能 自选。

    1 回复  |  直到 5 年前
        1
  •  1
  •   lukasgeiter    5 年前

    您可以使用 Partial utility type 带有打字脚本的:

    interface Item {
      id: string;
      name: string;
      price: number;
      stats: Partial<BattleSkills>;
    }
    

    部分 本质上是为您提供一个传入类型的副本,但使每个属性都是可选的。