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

TypeScript中能否禁止类属性赋值并抛出运行时错误?

问题

我编写了如下TypeScript代码:

class Computed<Value> {
  _value: Value;

  get value(){
    return this._value;
  }
}

当尝试为value属性赋值时,TypeScript会提示编译错误:Cannot assign to value because it is a read-only property.
目前编译时的限制符合需求,但我还想添加运行时检查,在有人尝试为该属性赋值时抛出错误,请问这是否可行?

回答

当然可行。你只需要给value属性添加一个setter方法,在setter中抛出错误即可。即便有人绕过TypeScript的编译检查(比如直接在JavaScript环境中使用代码,或通过类型断言跳过编译校验),运行时也会触发错误,阻止赋值操作。

修改后的代码如下:

class Computed<Value> {
  _value: Value;

  get value() {
    return this._value;
  }

  set value(_: Value) {
    throw new Error('Cannot assign to read-only property "value"');
  }
}

测试示例:

const comp = new Computed<number>();
comp.value = 123; // 编译时触发TypeScript错误,运行时执行该行会抛出Error

这种方式既保留了编译时的只读校验,又补充了运行时的防护,完全满足你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 09:27:05