選單
×
   ❮   
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 Null & Undefined


TypeScript 擁有強大的系統來處理 nullundefined 值。

預設情況下,nullundefined 的處理是停用的,可以透過將 strictNullChecks 設定為 true 來啟用。

此頁面的其餘部分適用於啟用了 strictNullChecks 的情況。


型別

nullundefined 是原始型別,可以像其他型別(如 string)一樣使用。

示例

let value: string | undefined | null = null;
value = 'hello';
value = undefined;
自己動手試一試 »

當啟用了 strictNullChecks 時,TypeScript 要求為變數賦值,除非在型別中明確添加了 undefined


可選鏈 (Optional Chaining)

可選鏈是一個 JavaScript 功能,它與 TypeScript 的 null 處理配合得很好。它允許使用緊湊的語法訪問可能存在也可能不存在的物件屬性。在訪問屬性時,可以使用 ?. 運算子。

示例

interface House {
  sqft: number;
  yard?: {
    sqft: number;
  };
}
function printYardSize(house: House) {
  const yardSize = house.yard?.sqft;
  if (yardSize === undefined) {
    console.log('No yard');
  } else {
    console.log(`Yard is ${yardSize} sqft`);
  }
}

let home: House = {
  sqft: 500
};

printYardSize(home); // Prints 'No yard'
自己動手試一試 »

空值合併 (Nullish Coalescence)

空值合併是另一個 JavaScript 功能,它也與 TypeScript 的 null 處理配合得很好。它允許編寫專門處理 nullundefined 的回退表示式。當表示式中可能出現其他虛值但仍有效時,這很有用。它可以在表示式中使用 ?? 運算子,類似於使用 && 運算子。

示例

function printMileage(mileage: number | null | undefined) {
  console.log(`Mileage: ${mileage ?? 'Not Available'}`);
}

printMileage(null); // Prints 'Mileage: Not Available'
printMileage(0); // Prints 'Mileage: 0'
自己動手試一試 »

w3schools CERTIFIED . 2022

獲得認證!

完成 TypeScript 模組,做練習,參加考試,成為 W3Schools 認證!!

$45 報名

Null 斷言 (Null Assertion)

TypeScript 的型別推斷系統並非完美,有時忽略值可能是 nullundefined 的可能性是有意義的。一種簡單的方法是使用型別斷言,但 TypeScript 也提供 ! 運算子作為便捷的快捷方式。

示例

function getValue(): string | undefined {
  return 'hello';
}
let value = getValue();
console.log('value length: ' + value!.length);
自己動手試一試 »

與型別斷言一樣,這可能不安全,應謹慎使用。


陣列邊界處理

即使啟用了 strictNullChecks,預設情況下 TypeScript 也會假設陣列訪問永遠不會返回 undefined(除非 undefined 是陣列型別的一部分)。

可以使用 noUncheckedIndexedAccess 配置來更改此行為。

示例

let array: number[] = [1, 2, 3];
let value = array[0]; // 使用 `noUncheckedIndexedAccess` 時,此型別為 `number | undefined`
自己動手試一試 »

×

聯絡銷售

如果您想將 W3Schools 服務用於教育機構、團隊或企業,請傳送電子郵件給我們
sales@w3schools.com

報告錯誤

如果您想報告錯誤,或想提出建議,請傳送電子郵件給我們
help@w3schools.com

W3Schools 經過最佳化,旨在方便學習和培訓。示例可能經過簡化,以提高閱讀和學習體驗。教程、參考資料和示例會不斷審查,以避免錯誤,但我們無法保證所有內容的完全正確性。使用 W3Schools 即表示您已閱讀並接受我們的使用條款Cookie 和隱私政策

版權所有 1999-2024 Refsnes Data。保留所有權利。W3Schools 由 W3.CSS 提供支援