Reputation: 63
I have a type State
in which all fields are required:
type State = {
title: string,
items: [],
isActive: boolean,
};
I need to create a new type with all properties the same as in State
but not required:
type StateUpdater = {
title?: string,
items?: [],
isActive?: boolean,
};
// ({title: 'hello'}: State) — INVALID
// ({title: 'hello'}: StateUpdater) — OK
How can I implement this similarly to the following Flow pseudocode?
type StateUpdater = State.mapKeyValue(() => typeKey?: typeValue)
Upvotes: 5
Views: 686
Reputation: 37918
You can use $Shape utility:
type State = {
title: string,
items: [],
isActive: boolean,
};
type StateUpdater = $Shape<State>;
$Shape
Copies the shape of the type supplied, but marks every field optional.
Upvotes: 5