Skip to Content

面试导航 - 程序员面试题库大全 | 前端后端面试真题 | 面试

Typescript高级类型:NonNullable

NonNullable 是 TypeScript 提供的一个 条件类型工具,用于移除某个类型中可能为 nullundefined 的部分。它返回一个新的类型,去除了 nullundefined

基本使用

假设我们有一个类型,它可能包含 nullundefined,我们想从中排除这些值,得到一个没有 nullundefined 的类型。

移除 nullundefined,如下代码所示:

type A = string | number | null | undefined; // A 是 string | number | null | undefined // 使用 NonNullable 移除 null 和 undefined,得到 string | number type Result = NonNullable<A>; // Result 是 string | number

在这个例子中,A 类型包含了 string | number | null | undefined,而使用 NonNullable<A> 后,Result 类型会移除 nullundefined,只保留 string | number

接下来我们再讲解一个在函数中的应用的例子:

type Callback = (value: string | null | undefined) => void; // 使用 NonNullable 去掉参数中的 null 和 undefined type NonNullableCallback = (value: NonNullable<string | null | undefined>) => void; // 结果:NonNullableCallback 的参数类型是 string

这里我们用 NonNullable 过滤掉了 string | null | undefined 中的 nullundefined,得到的类型是 string

实现原理

NonNullable 是通过 条件类型 实现的,它检查类型 T 是否是 nullundefined,如果是,就移除它们。

它的实现原理可以通过以下方式表示:

type NonNullable<T> = T extends null | undefined ? never : T;

在上面的代码实现中,主要有以下实现:

  • T extends null | undefined:判断类型 T 是否是 nullundefined

  • 如果 Tnullundefined,则返回 never,表示排除这些类型。

  • 如果 T 不是 nullundefined,则返回 T 本身,保留该类型。

总结

NonNullable<T> 是 TypeScript 的一个条件类型工具,用于从类型 T 中移除 nullundefined。它返回一个新类型,其中不包含 nullundefined,确保类型中只保留有效的值类型。NonNullable 常用于确保函数参数或变量的值不会是 nullundefined,提高代码的类型安全性。通过 NonNullable,我们可以避免在处理类型时出现空值相关的错误。

最后更新于:
Copyright © 2025Moment版权所有粤ICP备2025376666