肯定赋值断言与非空断言

肯定赋值断言与非空断言

例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 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!
未填写
文章
63
粉丝
17
喜欢
140
收藏
118
排名:132
访问:7.4 万
私信
所有博文
社区赞助商