代码之家  ›  专栏  ›  技术社区  ›  Arun Sudhakaran Nagma Firdose

将null定义为数据类型有什么用?

  •  0
  • Arun Sudhakaran Nagma Firdose  · 技术社区  · 6 年前

    我们在学习 TypeScript 在声明一个变量时,我们也试图像这样指定它的类型

    let a: number = 5;
    let b: boolean;
    let c: string;
    let d: any;
    
    let e: number[] = [1, 2, 3, 4, 5];
    let f: any[] = [true, 'foo', 4.09, []];
    
    let g: null;
    

    这些 any null 任何 ,但这和 . 这是我们第一次听说 作为一个 data type ,我们听说 无效的 Java . 真正令人困惑的是,为什么有人需要一个数据类型作为 无效的

    在Java中,我们将变量声明为

    int a = 0;
    double b = 0.0;
    char c = 'c';
    String x = "abc";
    

    但如果 无效的 是一种数据类型,它将如下所示

    null a;
    

    我们发现很难理解这个概念!如果一个变量被赋值为null,那么它的值很低, 什么都没有 就是这样,但是将null作为数据类型的目的是什么呢?所以我们看了一些网站

    Data types in TypeScript -这里写着 当对象没有任何值时使用 ,但这是否意味着如果一个对象没有值,就指定null,或者将null指定为那些没有值的对象的类型?

    在这里 How to declare a type as nullable in TypeScript? TypeScript: Define type that can be bool or null ,讨论的是给某个变量赋值/返回null。

    1 回复  |  直到 6 年前
        1
  •  3
  •   Ray Toal    6 年前

    null 价值

    let supervisor = "None"    // I have a supervisor named "None"
    let supervisor = null      // I DON'T HAVE a supervisor
    let supervisor = undefined // Maybe I have a supervisor, maybe
                               // I don't, I don't know or care, or
                               // none of your business
    

    现在你问我 无效的 作为一种类型。太好了!很容易混淆两者之间的价值 那类型呢 无效的 . 但你可以这样理解。TypeScript有 ,这些类型只有一个值。你知道吗 5 "dog" 是一种类型吗(唯一值为的类型 . 是的,你可以说:

    let x: "dog" = "dog";
    let y: 5 = 5;
    

    无效的 也。它是唯一值为的类型 无效的 . 这是一个单位类型,就像上面两个。

    let z: null = null;
    

    明确地 声明一个这样的类型,但您很可能需要这样的类型:

    number | null
    

    T1 | T2 ,其中T1和T2是类型。如果没有 ,那么 number | null 无效的 是一个值,则需要有一个类型 无效的 只包含值 无效的 .