如何将可空类型转换为不可空类型(在打字稿中)?

永川圭*_*川圭介 5 typescript

我想将可为空类型转换为不可为空类型。

例如,如果我有这样的类型:

const type A = {b: "xyz"} | null
Run Code Online (Sandbox Code Playgroud)

然后我想提取:

{b:"xyz"}
Run Code Online (Sandbox Code Playgroud)

通过这样做:

A!
Run Code Online (Sandbox Code Playgroud)

但它不起作用(当然,!运算符适用于可为空的“变量”,而不是可为空的“类型”)。

有人可以帮我解决这个问题吗?谢谢!

Dra*_*rax 3

如果你有一个类型:

type A = {b: "xyz"} | null
Run Code Online (Sandbox Code Playgroud)

使用将从您的联合类型中NonNullable删除null和:undefined

type NonNullableA = NonNullable<A>
Run Code Online (Sandbox Code Playgroud)

如果您只想删除null但仍保留,undefined可以使用Exclude

type NullExcludedA = Exclude<A, null>
Run Code Online (Sandbox Code Playgroud)

在这种情况下,NonNullableANullExcludedA都会产生您想要的类型:

{b:"xyz"}
Run Code Online (Sandbox Code Playgroud)

  • 额外: `!` 在幕后使用 `NonNullable&lt;T&gt;`。 (2认同)