例2的let y!: number
這種寫法叫做「肯定賦值斷言」,或者叫確定賦值、明確賦值都可以。叫法不同,意思一樣,都是用來通知TypeScript的:肯定賦值,不要報錯。
例3的console.log(z!)
這種寫法叫做「非空斷言」。這種寫法不是在變數宣告的時候新增歎號,而是在變數使用的時候新增歎號。
function initialize() {
x = y = z = 0;
}
//例 1
let x: number;
initialize();
console.log(x); // x 飄紅,編譯器報錯
//例 2
let y!: number; // 在變數 y 宣告之後新增一個歎號,可以防止報錯
initialize();
console.log(y);
console.log(y);
//例 3
let z: number;
initialize();
console.log(z!); // 也可以在使用變數的時候新增一個歎號防止報錯
console.log(z!);
非空斷言的缺點很明顯:用幾次就必須加幾個歎號,缺少任何一個歎號都會報錯。而前例的肯定賦值斷言只需一個歎號即可,無論今後使用多少次都不必新增歎號了。
本作品採用《CC 協議》,轉載必須註明作者和本文連結