typescript class定义私有方法

image.png
image.png

ts 中的class如何实现以上效果
类中有私有方法a
a可以被实例上的方法引用
a可以引用实例上的属性
打印实例方法a不可见

阅读 7.3k
2 个回答

如果你需要 es 中的真正的私有属性,而非 ts 的假私有属性,可以这样写:

class Test {
    #a = () => console.log(1)

    public b() {
        this.#a();
    }
}

如果你需要支持低版本的 js,而只是希望这个属性不可见(其实还是可以访问的),可以将这个数值设置为不可枚举。

function Test() {}

Object.defineProperty(Test.prototype, "a", {
  enumerable: false,
  writable: true,
});

Test.prototype.a = function() {
  console.log(111)
}

class Test {
  public readonly c = 1;

  public b () {
    const a = () => {
      console.log(this.c);
    };
    a();
  }
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题