typescript - 在类外只读,但对类成员可读写的属性

标签 typescript

我希望在我的类中有一个属性是可读的,但不能被类外部的代码直接修改。基本上,等同于从 C++ 中的方法返回对成员的 const 引用。

按照这些思路写一些东西:

class test {
    private readonly x_ = new Uint8Array([0, 1, 2]);
    public x() { return this.x_;}
}

不起作用,因为像下面这样的代码仍然可以编译:

let a = new test();
a.x()[0] = 1;

实现此目标的正确方法是什么?

最佳答案

对于 future 的读者,我们可以使用 getter 允许在类外读取属性,但限制编辑。

class Test {
    private x_ = new Uint8Array([0, 1, 2]);

    get x() {
        return this.x_;
    }
}
let test = new Test();
console.log(test.x) //Can read
test.x = 1; //Error: Cannot assign to 'x' because it is a read-only property.

关于typescript - 在类外只读,但对类成员可读写的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40650031/

相关文章:

TypeScript:类型别名与基于字符串的枚举

javascript - 如何访问Angular2中Annotation内部的组件?

Javascript:在 bool 上下文中使用 "!!"

reactjs - 包括不是来自 CDN 的 office-ui-fabric 样式

html - 如何使用angular 2 (v2.0.0-beta.15)实现拖放

angular - 如何在 Angular 中使用全局扩展?

typescript - 有没有一种方法可以优雅地键入对象文字的字段,而无需键入对象文字本身?

javascript - 如何从过滤器的过滤器返回值?

Angular2 innerHTML 删除属性,使用 DomSanitizer 需要帮助

typescript - 为不同的枚举定义特定的对象负载