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
相关产品推荐
相关产品推荐

