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

时间:2018-09-21 06:17:18

标签: typescript types null

我们正在学习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;

这些anynull对我们来说是陌生的,我们能够理解any的概念,但是它与null混淆了。这是我们第一次听说nulldata type,我们已经听说nullJava中的一个值。真正令人困惑的是,为什么有人需要数据类型为null

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

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

但是如果null是一种数据类型,它会喜欢这样

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分配/返回给某个变量。

那么有人能帮助我们清除null用作数据类型的概念吗?

1 个答案:

答案 0 :(得分:3)

在JavaScript和TypeScript中,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

现在,您询问了null作为一种类型。大!值null和类型null之间容易混淆。但是,这是您可以理解的方式。 TypeScript具有单位类型,这些类型只有一个值。您知道5是一种类型吗? (这是唯一值是数字5的类型。您知道"dog"是一种类型吗?(唯一值是"dog"的类型。是的,您可以说:

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

现在,由于null是一个值,因此也存在一个称为null的类型。它是唯一值为null的类型。就像上面的两个一样,它是一个单元类型。

let z: null = null;

现在,如果您的问题是“为什么我会在真实的应用程序中声明这种类型?”这也是一个好问题。也许您可能没有明确地声明这样的类型,但是您很可能想要这样的类型:

number | null

这可能是将字符串转换为数字的函数的结果类型。注意联合类型T1 | T2,其中T1和T2是类型。如果没有null这样的类型,那么number | null不会是两种类型的并集,事情将会很奇怪。当您拥有单位类型时,事情会变得更加干净!而且由于null是一个值,所以需要有一个null类型,仅包含值null

相关问题