如何创建具有现有类型的所有属性但可选的

时间:2018-08-07 13:58:30

标签: javascript flowtype

我的类型为State,其中所有字段都是必填字段:

type State = {
  title: string,
  items: [],
  isActive: boolean,
};

我需要创建一个新类型,其所有属性都与State中的属性相同,但不是必需的:

type StateUpdater = {
  title?: string,
  items?: [],
  isActive?: boolean,
};

// ({title: 'hello'}: State) — INVALID
// ({title: 'hello'}: StateUpdater) — OK

如何与以下Flow伪代码类似地实现此目的?

type StateUpdater = State.mapKeyValue(() => typeKey?: typeValue)

1 个答案:

答案 0 :(得分:1)

您可以使用$Shape实用程序:

type State = {
  title: string,
  items: [],
  isActive: boolean,
};

type StateUpdater = $Shape<State>;
  

$ Shape复制所提供类型的形状,但将每个字段标记为可选。