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

Javascript 如何创建具有现有类型但可选的所有属性的新流类型,javascript,flowtype,Javascript,Flowtype,我有一个类型State,其中所有字段都是必需的: type State = { title: string, items: [], isActive: boolean, }; type StateUpdater = { title?: string, items?: [], isActive?: boolean, }; // ({title: 'hello'}: State) — INVALID // ({title: 'hello'}: StateUpdater)

我有一个类型
State
,其中所有字段都是必需的:

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

// ({title: 'hello'}: State) — INVALID
// ({title: 'hello'}: StateUpdater) — OK
我需要创建一个新类型,其所有属性与
状态中的相同,但不是必需的:

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

// ({title: 'hello'}: State) — INVALID
// ({title: 'hello'}: StateUpdater) — OK
如何实现类似于以下流伪代码的功能

type StateUpdater = State.mapKeyValue(() => typeKey?: typeValue)
您可以使用以下实用程序:

类型状态={
标题:字符串,
项目:[],
isActive:布尔值,
};
类型StateUpdater=$Shape;
$Shape
复制所提供类型的形状,但将每个字段标记为可选