TypeScript:如何解开 Maybe<T> 类型?

Hyn*_*ekS 0 typescript

如何获取包装在类型中的变量的类型Maybe

在这种情况下,执行Maybe是:

type Maybe<T> = T | null
Run Code Online (Sandbox Code Playgroud)

假设我有一个这样输入的数据:

type MyData = { postTitle: string } & { meta: Maybe<{ tags: Array<El> }> }
Run Code Online (Sandbox Code Playgroud)

我需要提取 El 的类型以便在其他地方使用它。

我是TS菜鸟。我意识到,如果没有包装,很容易获得任何嵌套类型,就像type Easy= Simple['one']['heyAnArrayHere'][number]['propOfArrayElement'] 但一旦 Maybe 以某种方式出现,我就完成了。

我认为我需要一个条件类型,可能类似于 type Expand<T> = T extends Maybe<infer U> ? U : T,但这根​​本不起作用。

任何帮助,将不胜感激!

jse*_*ksn 5

您正在寻找NonNullable<Type>实用程序

TS 游乐场链接

type El = HTMLElement;
type Maybe<T> = T | null;
type MyData = { postTitle: string } & { meta: Maybe<{ tags: Array<El> }> }

type AlsoEl = NonNullable<MyData['meta']>['tags'][number];
Run Code Online (Sandbox Code Playgroud)