Menu
×
   ❮   
HTML CSS JAVASCRIPT SQL PYTHON JAVA PHP HOW TO W3.CSS C C++ C# BOOTSTRAP REACT MYSQL JQUERY EXCEL XML DJANGO NUMPY PANDAS NODEJS R TYPESCRIPT ANGULAR GIT POSTGRESQL MONGODB ASP AI GO KOTLIN SASS VUE DSA GEN AI SCIPY AWS CYBERSECURITY DATA SCIENCE
     ❯   

TypeScript 空值 & 未定义


TypeScript 拥有一个强大的系统来处理 nullundefined 值。

默认情况下,nullundefined 处理是禁用的,可以通过将 strictNullChecks 设置为 true 来启用。

此页面其余内容适用于启用 strictNullChecks 的情况。


类型

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

示例

let value: string | undefined | null = null;
value = 'hello';
value = undefined;
自己尝试 »

当启用 strictNullChecks 时,TypeScript 要求设置值,除非 undefined 明确添加到类型中。


可选链

可选链是 JavaScript 的一项功能,它与 TypeScript 的空值处理配合良好。它允许使用简洁的语法访问对象上可能存在也可能不存在的属性。在访问属性时,可以使用 ?. 运算符。

示例

interface House {
  sqft: number;
  yard?: {
    sqft: number;
  };
}
function printYardSize(house: House) {
  const yardSize = house.yard?.sqft;
  if (yardSize === undefined) {
    console.log('没有院子');
  } else {
    console.log(`院子面积为 ${yardSize} 平方英尺`);
  }
}

let home: House = {
  sqft: 500
};

printYardSize(home); // 输出 '没有院子'
自己尝试 »

空值合并运算符

空值合并运算符是另一个 JavaScript 功能,它也与 TypeScript 的空值处理配合良好。它允许编写在处理 nullundefined 时具有回退值的表达式。当表达式中可能出现其他假值但仍然有效时,这很有用。它可以使用 ?? 运算符在表达式中,类似于使用 && 运算符。

示例

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

printMileage(null); // 输出 '里程数: 不可用'
printMileage(0); // 输出 '里程数: 0'
自己尝试 »

w3schools CERTIFIED . 2022

获得认证!

完成 TypeScript 模块,进行练习,参加考试并成为 w3schools 认证专家!!

$45 报名

空值断言

TypeScript 的推断系统并不完美,有时忽略值可能是 nullundefined 的可能性是有意义的。一种简单的方法是使用类型转换,但 TypeScript 还提供 ! 运算符作为便捷的快捷方式。

示例

function getValue(): string | undefined {
  return 'hello';
}
let value = getValue();
console.log('value 长度: ' + value!.length);
自己尝试 »

就像类型转换一样,这可能不安全,应谨慎使用。


数组边界处理

即使启用了 strictNullChecks,默认情况下,TypeScript 也会假设数组访问永远不会返回 undefined(除非 undefined 是数组类型的一部分)。

配置 noUncheckedIndexedAccess 可用于更改此行为。

示例

let array: number[] = [1, 2, 3];
let value = array[0]; // 使用 `noUncheckedIndexedAccess`,此处的类型为 `number | undefined`
自己尝试 »

×

Contact Sales

If you want to use W3Schools services as an educational institution, team or enterprise, send us an e-mail:
[email protected]

Report Error

If you want to report an error, or if you want to make a suggestion, send us an e-mail:
[email protected]

W3Schools is optimized for learning and training. Examples might be simplified to improve reading and learning. Tutorials, references, and examples are constantly reviewed to avoid errors, but we cannot warrant full correctness of all content. While using W3Schools, you agree to have read and accepted our terms of use, cookie and privacy policy.

Copyright 1999-2024 by Refsnes Data. All Rights Reserved. W3Schools is Powered by W3.CSS.