簡體   English   中英

將 Flow/TypeScript JavaScript object 值類型轉換為不可為空

[英]Cast Flow/TypeScript JavaScript object value types to non-nullable

我有以下類型

type MyObject = $ReadOnly<{
  foo: ?number,
  bar: ?number,
  baz: ?number,
}>;

我想將所有值轉換為不可為空的,例如;

type MyNonNullValuesObject = $ReadOnly<{
  foo: number,
  bar: number,
  baz: number,
}>;

在不重復所有鍵的情況下,在 Flow 中這樣做的好方法是什么? 我希望在這里使用$NonMaybeType<T>實用程序來幫助我。

在 typescript 中,這將是:

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>;

使用NonNullable實用程序映射類型

操場

Flow 提供了一個$ObjMap實用程序類型,您可以將其用於 map 的值,並通過$NonMaybeType將它們轉換為不可為空的值。

type MyObject = $ReadOnly<{
  foo: ?number,
  bar: ?number,
  baz: ?number,
}>;

type NonMaybeValueType = <V>(V) => $NonMaybeType<V>;
type MyNonNullValuesObject = $ObjMap<MyObject, NonMaybeValueType>;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM