最适合网络开发者的网站
TypeScript。初学者课程

尿素 西斯

TypeScript Null 和 Undefined


TypeScript 有强大的系统来处理 null 或者undefined 值。

默认情况下 nullundefined 处理被禁用,可以通过设置启用strictNullChecks 成真。

本页的其余部分适用于 strictNullChecks 已启用。


类型

nullundefined 是原始类型,可以像其他类型一样使用,例如string.

例子

让值:字符串 | undefined | null = null;
值 = ‘你好’;
值=未定义;
亲自尝试 »

什么时候 strictNullChecks 启用后,TypeScript 要求设置值,除非undefined 被明确添加到类型中。


可选链式调用

可选链式调用是 JavaScript 的一个特性,可以很好地与 TypeScript 的空值处理配合使用。它允许使用紧凑的语法访问对象上可能存在也可能不存在的属性。它可以与 ?. 访问属性时使用运算符。

例子

界面之家 {
平方英尺:数字;
院子?: {
平方英尺:数字;
  };
}
函数 printYardSize(房屋:房屋){
const yardSize = house.yard?.sqft;
如果 (yardSize === 未定义) {
console.log('没有院子');
} 别的 {
console.log(`码数为 ${yardSize} 平方英尺`);
  }
}

出租房屋:房子 = {
平方英尺:500
};

printYardSize(home); // 打印“无院子”
亲自尝试 »

无效合并

空值合并是另一个 JavaScript 特性,它也能很好地与 TypeScript 的空值处理配合使用。它允许编写具有回退功能的表达式,特别是在处理以下情况时: null 或者undefined。当表达式中可以出现其他假值但仍然有效时,这很有用。它可以与 ?? 表达式中的运算符,类似于使用&& 操作员。

例子

函数 printMileage(里程:数字 | null | undefined){
console.log(`里程:${mileage ??'不可用'}`);
}

printMileage(null); // 打印“里程:不可用”
printMileage(0); // 打印“里程:0”
亲自尝试 »

空断言

TypeScript 的推理系统并不完美,有时忽略某个值被 null 或者undefined一个简单的方法是使用强制转换,但 TypeScript 还提供了 ! 操作符作为一种便捷的快捷方式。

例子

函数 getValue():字符串 | 未定义 {
返回‘你好’;
}
让值 = 获取值 ();
console.log('值的长度:' + 值!.length);
亲自尝试 »

就像铸造一样,这可能不安全,应小心使用。


数组边界处理

即使 strictNullChecks 启用后,默认情况下 TypeScript 将假定数组访问永远不会返回未定义(除非未定义是数组类型的一部分)。

配置 noUncheckedIndexedAccess 可以用来改变这种行为。

例子

让数组:数字[] = [1, 2, 3];
let value = array[0]; // 使用 `noUncheckedIndexedAccess` 时,其类型为 `number | undefined`
亲自尝试 »


评论