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

TypeScript中如何在匿名对象中访问类参数与成员?

在TypeScript类方法中访问成员到匿名对象的解决方案

首先咱们先拆解你示例代码里的两个明显问题:

  1. 直接写working是找不到的——类的实例属性(不管是私有还是公有)必须通过this来访问,这是TS/JS类的基本规则;
  2. { ..., this.notWorking }是无效语法——对象字面量里不能直接丢一个值,必须遵循属性名: 值的格式,或者用ES6的属性简写。

正确的示例代码

class Foo { // 惯例类名首字母大写哦
  private working = 'hello';
  private notWorking = 'world';
  public method() {
    // 1. 用this.working访问类的私有属性
    // 2. 正确构建匿名对象,指定属性名和对应的值
    new DoSomethingClass(this.working, { 
      // 写法1:明确指定属性名和值
      notWorking: this.notWorking,
      // 如果需要合并其他对象,可以用展开运算符
      // ...someOtherObject,
      // 写法2:属性简写(如果提前把值存到同名变量)
      // 比如:const notWorking = this.notWorking; 然后写 { notWorking }
    });
  }
}

针对你的两个问题的具体解答

问题1:如何在TypeScript的匿名对象中访问类参数?

类的实例属性(也就是你说的“类参数”)必须通过this关键字来访问,然后在匿名对象里以属性名: this.属性名的形式添加进去就行。如果属性名和类成员名一致,还可以用ES6的属性简写(比如先把this.working赋值给变量working,然后在对象里写{ working })。

问题2:创建匿名对象时如何访问类成员?

核心逻辑和上面一致:用this访问类成员,再按照对象字面量的语法把成员加入匿名对象。这里要额外注意一种情况:如果你的匿名对象里定义了嵌套函数,这时函数内部的this会指向匿名对象本身,而不是类的实例。如果要在这种函数里访问类成员,有两种常用办法:

  • 提前把类实例的this存起来:
    public method() {
      const self = this; // 保存类的this
      new DoSomethingClass(this.working, { 
        someFunction() {
          console.log(self.notWorking); // 用self访问类成员
        }
      });
    }
    
  • 使用箭头函数(箭头函数的this继承自外层作用域,也就是类的实例):
    public method() {
      new DoSomethingClass(this.working, { 
        someFunction: () => {
          console.log(this.notWorking); // 这里的this还是类的实例
        }
      });
    }
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 07:33:47