You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在TypeScript中,类字段后的感叹号(!)有什么作用?

TypeScript类属性字段后感叹号(!)的用途

这个感叹号是TypeScript中的非空断言操作符(Non-null Assertion Operator),核心作用是明确告诉编译器:该属性一定会在被访问前完成初始化,不会是null或undefined,让编译器跳过对这个属性的严格空值检查。

结合你给出的示例代码:

class MyDataApiResponse {
    name!: string
    age!: number
}

在TypeScript的严格模式(开启strictNullChecks)下,如果去掉属性后的!,编译器会抛出错误——因为这些属性没有在类的构造函数中初始化,编译器默认认为它们可能是undefined。加上!之后,就相当于你向编译器做出承诺:这个属性后续一定会被赋值,不用再做空值校验。

这种写法常见于以下场景:

  • 属性会通过外部逻辑赋值(比如API响应数据解析后赋值、依赖注入框架自动初始化),而非在类的构造函数内完成初始化
  • 你能确保属性在被访问前必然有值,不想因为编译器的严格检查而额外编写冗余的初始化代码

内容的提问来源于stack exchange,提问作者Wallace

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 21:09:24