在 TypeScript 中,空值(null 和 undefined)是两种不同的值,它们都表示缺少值,但它们的用途和行为有所不同。
1、null
null 是一个特殊的值,表示一个变量没有被赋值,在 JavaScript 中,null 通常用于表示对象不存在或者函数没有返回任何值,在 TypeScript 中,null 是一个有效的值类型,可以赋值给任何类型的变量。
我们可以创建一个名为 myVar
的变量,并将其设置为 null:
let myVar: any = null;
我们还可以使用类型断言将一个变量显式地转换为 null:
let maybeNull: string = "hello"; maybeNull = maybeNull as null; // 显式类型断言
2、undefined
undefined 是一个特殊的值,表示一个变量被声明了,但没有赋值,在 JavaScript 中,当我们尝试访问一个未定义的变量时,它的值为 undefined,在 TypeScript 中,undefined 是一个有效的值类型,可以赋值给任何类型的变量。
我们可以创建一个名为 myUndefinedVar
的变量,并将其设置为 undefined:
let myUndefinedVar: any = undefined;
我们还可以使用类型断言将一个变量显式地转换为 undefined:
let maybeUndefined: string = "hello"; maybeUndefined = maybeUndefined as undefined; // 显式类型断言
3、区别与使用场景
虽然 null 和 undefined 都表示缺少值,但它们在使用场景上有所不同,以下是它们的主要区别:
null 通常用于表示对象不存在或者函数没有返回任何值,当我们需要表示一个变量可能为空时,通常会使用 null,我们可能会有一个表示用户 ID 的变量,如果用户尚未登录,那么这个变量的值应该为 null。
undefined 通常用于表示一个变量被声明了,但没有赋值,当我们需要表示一个变量尚未被初始化时,通常会使用 undefined,我们可能会有一个表示年龄的变量,如果用户还没有输入年龄,那么这个变量的值应该为 undefined。
4、空值检查
在 TypeScript 中,我们可以使用严格相等运算符(===)来检查一个值是否为 null 或 undefined。
function isNullOrUndefined(value: any): boolean { return value === null || value === undefined; }
我们还可以使用逻辑非运算符(!)来检查一个值是否不为 null 或 undefined。
function isNotNullOrDefined(value: any): boolean { return value !== null && value !== undefined; }
5、空值合并操作符(??)
TypeScript 3.7 引入了一个名为“空值合并操作符”(nullish coalescing operator)的新特性,它允许我们在一个表达式中安全地访问一个可能为空的值,语法如下:
const result = a ?? b; // a 为 null 或 undefined,则返回 b,否则返回 a
const userAge = user?.age ?? 0; // user.age 为 null 或 undefined,则返回 0,否则返回 user.age
6、never 类型
除了 null 和 undefined,TypeScript 还有一个名为 never 的特殊类型,never 类型表示永远不会返回的值的类型,抛出异常的函数会返回 never:
function errorFunction(): never { throw new Error("An error occurred"); // 这个函数永远不会返回任何值,因此其类型为 never }
归纳一下,TypeScript 中的空值(null 和 undefined)是两种不同的值,它们都表示缺少值,但它们的用途和行为有所不同,在使用 TypeScript 时,我们需要了解这些空值的特性以及如何在代码中使用它们,通过正确地处理空值,我们可以编写出更健壮、更安全的 TypeScript 代码。
原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/476898.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复