将 Flow/TypeScript JavaScript 对象值类型转换为不可空
Cast Flow/TypeScript JavaScript object value types to non-nullable
我有以下类型
type MyObject = $ReadOnly<{
foo: ?number,
bar: ?number,
baz: ?number,
}>;
并且我想将所有值都转换为不可为 null 的值,例如;
type MyNonNullValuesObject = $ReadOnly<{
foo: number,
bar: number,
baz: number,
}>;
在 Flow 中无需重复所有按键的好方法是什么?我希望使用 $NonMaybeType<T>
实用程序来帮助我。
Flow 提供了一个 $ObjMap
实用程序类型,您可以使用它来映射值并通过 $NonMaybeType
.
将它们转换为不可空值
type MyObject = $ReadOnly<{
foo: ?number,
bar: ?number,
baz: ?number,
}>;
type NonMaybeValueType = <V>(V) => $NonMaybeType<V>;
type MyNonNullValuesObject = $ObjMap<MyObject, NonMaybeValueType>;
在打字稿中,这将是:
type MyObject = Readonly<{
foo: number | null,
bar: number | null,
baz: number | null,
}>;
type NonNullableObject<T> = { [K in keyof T]: NonNullable<T[K]> };
type MyNonNullableObject = NonNullableObject<MyObject>;
Mapped type using NonNullable 实用程序。
我有以下类型
type MyObject = $ReadOnly<{
foo: ?number,
bar: ?number,
baz: ?number,
}>;
并且我想将所有值都转换为不可为 null 的值,例如;
type MyNonNullValuesObject = $ReadOnly<{
foo: number,
bar: number,
baz: number,
}>;
在 Flow 中无需重复所有按键的好方法是什么?我希望使用 $NonMaybeType<T>
实用程序来帮助我。
Flow 提供了一个 $ObjMap
实用程序类型,您可以使用它来映射值并通过 $NonMaybeType
.
type MyObject = $ReadOnly<{
foo: ?number,
bar: ?number,
baz: ?number,
}>;
type NonMaybeValueType = <V>(V) => $NonMaybeType<V>;
type MyNonNullValuesObject = $ObjMap<MyObject, NonMaybeValueType>;
在打字稿中,这将是:
type MyObject = Readonly<{
foo: number | null,
bar: number | null,
baz: number | null,
}>;
type NonNullableObject<T> = { [K in keyof T]: NonNullable<T[K]> };
type MyNonNullableObject = NonNullableObject<MyObject>;
Mapped type using NonNullable 实用程序。