【问题标题】:TypeScript type exclude null include undefinedTypeScript 类型排除 null 包括未定义
【发布时间】:2020-10-01 12:02:58
【问题描述】:

根据

https://www.typescriptlang.org/docs/handbook/utility-types.html#nonnullabletype

NonNullable

通过从 Type 中排除 null 和 undefined 来构造一个类型。

例子
type T0 = NonNullable<string | number | undefined>;
//    ^ = type T0 = string | number
type T1 = NonNullable<string[] | null | undefined>;
//    ^ = type T1 = string[]

我读过它被定义为:

type NonNullable<T> = T extends null ? never : T

现在,我想排除 null,但要包含我的代码所需的 undefined

你会怎么做?谢谢。

【问题讨论】:

    标签: typescript nullable


    【解决方案1】:

    其实现有的NonNullable定义为type NonNullable&lt;T&gt; = T extends null | undefined ? never : T;。但是您可以像下面这样创建自己的实用程序类型并使用它。

    type NonNullButUndefined<T> = T extends null ? never : T;
    
    // Usage
    type T = NonNullButUndefined<string | null | undefined>;
    

    用法:

    【讨论】:

    • 谢谢,我忘了提。我真正需要的是除 null 之外的任何类型,比如unknown - null。你会怎么做?
    • 我不太明白。你的意思是你也想支持unknown?
    • 这就像type T = NonNullButUndefined&lt;unknown&gt;; 但对于一些阅读,这只是unknown
    猜你喜欢
    • 1970-01-01
    • 2023-02-23
    • 2018-03-27
    • 2012-01-04
    • 2019-03-08
    • 2014-02-28
    • 2017-07-20
    • 2018-01-07
    • 1970-01-01
    相关资源
    最近更新 更多