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

时间:2019-09-01 11:46:20

标签: typescript interface

我有2个界面:

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字段,但所有子字段都是可选的?最好不要将BattleSkills中的字段设置为可选字段。

1 个答案:

答案 0 :(得分:1)

您可以使用TypeScript附带的Partial utility type

self.tableView.updateRow(row: 1)

interface Item { id: string; name: string; price: number; stats: Partial<BattleSkills>; } 本质上为您提供了传入类型的副本,但使每个属性都是可选的。