TypeScript:确定赋值断言(使用叹号!) 作者:马育民 • 2024-11-07 15:49 • 阅读:10026 勿动,下面文章引用: 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; } ``` 参考: https://www.cnblogs.com/goloving/p/12097361.html 原文出处:http://malaoshi.top/show_1IX8kU8YAqoL.html