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

TypeScript中readonly构造函数参数是否默认创建并赋值属性?

回答:构造函数中带readonly的参数会自动创建并赋值类属性

没错,你观察到的这个现象完全是TypeScript特意设计的语法糖效果——当你在构造函数参数前添加readonly(或者public/private/protected这类访问修饰符)时,TypeScript会自动帮你完成两件事:

  • 在类的内部定义一个同名的readonly类属性
  • 在构造函数执行时,自动把参数的值赋值给这个属性

所以哪怕你在构造函数体里没写任何手动赋值的代码,后续依然可以通过this.constructorParam正常访问这个属性,这个特性在抽象类、继承类或者实现接口的类中同样生效。

举个更完整的例子对应你的场景:

// 假设存在基类和接口
abstract class BaseClass { /* ... */ }
interface SomeInterface { /* ... */ }

export abstract class YourClass extends BaseClass implements SomeInterface {
  constructor(readonly constructorParam: Type) {
    super(); // 继承基类时必须调用super
    // 无需手动写 this.constructorParam = constructorParam;
  }

  // 后续方法可以直接使用该属性
  demoMethod() {
    console.log(this.constructorParam);
  }
}

这个语法糖的设计目的是减少冗余代码,让类的属性定义和构造函数参数初始化合并成一步,是TypeScript中非常常用的简化写法。

内容的提问来源于stack exchange,提问作者Michał Turczyn

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:53:39