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

TypeScript readonly属性构造函数未明确赋值报错的原因与解决

错误原因

你构造函数里的三元表达式逻辑写错了:当参数val1为undefined时,你只是把参数本身赋值为true,并没有给实例的this.val1赋值。TypeScript的严格类型检查会判定存在this.val1未被初始化的场景,因此抛出这个报错。

正确修复方式

有两种简洁可靠的修复方法:

方法一:修正三元表达式的赋值目标

把else分支的赋值对象改为this.val1,同时建议用!==做更严谨的判断(避免null被误判为undefined):

class myProps {
  public readonly val1: boolean;

  constructor(val1?: boolean) {
    this.val1 = val1 !== undefined ? val1 : true;
  }
}

方法二:给构造函数参数设置默认值

这是TypeScript中更简洁的写法,直接给参数val1设置默认值true,构造函数内直接将参数赋值给实例属性:

class myProps {
  public readonly val1: boolean;

  constructor(val1: boolean = true) {
    this.val1 = val1;
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 01:32:08