NonNullable 是 TypeScript 中的一个工具类型,它用于从给定类型中排除 null 和 undefined。

示例:

type MyType = string | null | undefined;
type NonNullableType = NonNullable<MyType>; // 等同于 type NonNullableType = string

在上面的示例中,我们定义了一个类型 MyType,它可以是 string、null 或 undefined 中的一种。然后我们使用 NonNullable 工具类型来创建一个新的类型 NonNullableType,该类型排除了 null 和 undefined,因此它只能是 string 类型。

另一个示例:

type User = {
    name: string;
    age?: number;
}

type NonNullableUser = {
    [K in keyof User]-?: NonNullable<User[K]>
}

在这个示例中,我们定义了一个 User 类型,它有一个 name 属性和一个可选的 age 属性。然后我们使用 NonNullable 工具类型来创建一个新的类型 NonNullableUser,该类型将 User 类型中的所有属性转换为 NonNullable 类型。在这种情况下,age 属性变为必填属性,因为它排除了 null 和 undefined。

总结一下,NonNullable 工具类型用于从给定类型中排除 null 和 undefined,使得新类型只能是原类型的非空值。