5

我正在为一个尚不存在的库创建一个声明文件,但其中有一些类具有只读属性。我怎样才能把它放在声明中?

4

2 回答 2

5

奇怪的是,您不能在接口或环境声明上指定 getter 和 setter。

您可以获得的最接近的是:

interface Test {
    Prop: number;
}

class Example implements Test {
    private prop: number;

    get Prop() :number {
        return this.prop;
    }
}

不幸的是,这不会阻止实现允许设置器,并且在环境声明的上下文中,它不会阻止调用者尝试设置值。

于 2013-02-10T11:40:29.127 回答
2

使用 TypeScript 2.0,您现在可以声明只读属性,例如

interface Point {
    readonly x: number;
    readonly y: number;
}

var p1: Point = { x: 10, y: 20 };
p1.x = 5;                            // Error, p1.x is read-only

var p2 = { x: 1, y: 1 };
var p3: Point = p2;                  // Ok, read-only alias for p2
p3.x = 5;                            // Error, p3.x is read-only
p2.x = 5;                            // Ok, but also changes p3.x because of aliasing

请参阅此处了解更多详细信息。

于 2016-08-10T16:58:23.493 回答