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

如何配置TypeScript强制类构造函数赋值readonly属性?

让TypeScript强制检查readonly属性的构造函数赋值

要实现你需要的检查效果,只需在tsconfig.json的compilerOptions中开启strictPropertyInitialization配置项即可。

具体说明:

  • 开启strictPropertyInitialization后,TypeScript会强制要求所有非可选的类属性(包括readonly属性)必须在构造函数内完成赋值,或者在属性定义时直接初始化。
  • 你的示例代码中,bar是readonly string类型但未被初始化,开启该配置后,tsc会触发如下类型错误:

    Property 'bar' has no initializer and is not definitely assigned in the constructor.

配置示例:

{
  "compilerOptions": {
    // 推荐开启strict模式,它会自动包含strictPropertyInitialization等一系列严格检查
    "strict": true,
    // 也可以单独开启该选项(如果不想开启全部strict检查)
    // "strictPropertyInitialization": true
  }
}

特殊情况处理:

如果某些属性确实无法在构造函数初始化(比如依赖注入场景),可以通过非空断言!跳过检查,写法如下:

class Foo {
  private readonly bar!: string
 
  constructor() {
    // 后续通过其他方式赋值
  }
}

但这种方式不建议滥用,会绕过TypeScript的类型安全检查。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 19:14:52