【发布时间】:2019-10-16 13:07:23
【问题描述】:
【问题讨论】:
-
关闭为重复,我认为它是特定于角度的。
标签: javascript angular typescript
【问题讨论】:
标签: javascript angular typescript
非空断言运算符 (!)
从 Typescript 2.0 开始,您可以使用
--strictNullChecks标志。然后 TypeScript 确保没有变量是无意的null或undefined。在这种模式下,类型化变量默认不允许
null和undefined。 如果您未分配变量或未分配变量,类型检查器将引发错误 尝试将null或undefined分配给类型不允许的变量null和undefined。如果类型检查器无法确定是否存在 变量将在运行时为
null或undefined。你可能知道不能 发生但类型检查器不知道。你告诉类型检查器 应用后缀 non-null assertion operator (!) 不会发生这种情况。Angular 非空断言运算符 (!) 在 一个 Angular 模板。
例如,在您使用
*ngIf检查hero是否已定义后,您 可以断言hero属性也已定义。<!--No hero, no text --> <div *ngIf="hero"> The hero's name is {{hero!.name}} </div>当 Angular 编译器将您的模板转换为 TypeScript 代码时,它 防止 TypeScript 报告
hero.name可能是null或undefined.与safe navigation operator 不同,非空断言运算符 不防范
null或undefined。而是告诉 TypeScript 类型检查器暂停对特定对象的严格空检查 属性表达式。当您开启严格的 null 时,您将需要此模板运算符 检查。否则它是可选的。
【讨论】:
它被称为"Non-null assertion operator",与 Angular 本身无关,它来自 typescript。
let s = e!.name; // Assert that e is non-null and access name
【讨论】: