勿动,下面文章引用:
https://www.malaoshi.top/show_1IX8jNcppeRa.html
说明
有时候,我们非常确定某个变量 不会是 null 或 undefined,但 TypeScript 的类型系统 无法推断出来。
这时可以使用非空断言运算符 !,告诉编译器:我知道这个值不是 null 或 undefined,请放心使用
注意: 谨慎使用,因为 不会 做任何检查
实例属性
错误写法
报错,因为属性 username 没有在构造方法中初始化
class User {
username: string;
constructor(username: string) {
this.initialize(username);
}
private initialize(username: string) {
this.username = username;
}
}
正确写法
在属性 username 的后面写上 !,表示该属性会明确赋值
class User {
username!: string;
constructor(username: string) {
this.initialize(username);
}
private initialize(username: string) {
this.username = username;
}
}
变量
错误写法
let x: number;
initialize(); // 在该方法中给变量 x 赋值
// Variable 'x' is used before being assigned.(2454)
console.log(2 * x); // 报错,因为没有给 x 显示赋值
function initialize() {
x = 10;
}
正确写法
在变量 x 的后面写上 !,表示该变量会明确赋值
let x!: number;
initialize();
console.log(2 * x); // Ok
function initialize() {
x = 10;
}