wangdoc / typescript-tutorial

TypeScript 教程
https://wangdoc.com/typescript
2.43k stars 256 forks source link

第17章「装饰器」第8小节「accessor 装饰器」关于 accessor 描述错误的问题 #93

Closed masonzz closed 9 months ago

masonzz commented 9 months ago

原文:

class C {
  accessor x = 1;
}

上面示例中,accessor修饰符等同于为属性x自动生成取值器和存值器,它们作用于私有属性x。也就是说,上面的代码等同于下面的代码。

class C {
  #x = 1;

  get x() {
    return this.#x;
  }

  set x(val) {
    this.#x = val;
  }
}

上述示例中,经过 accessor 修饰的 x 并不会转化为私有属性。

playground 链接

class C {
  accessor x = 1;
  accessor #y = 1;
}

const c = new C();

console.log(c.x);
console.log(c.y);
//            ^? 此处访问 c.y 会报错
ruanyf commented 9 months ago

这里应该说,属性x的存在依赖于存取器,而存取器依赖于私有属性x