我正在为一个尚不存在的库创建一个声明文件,但是其中有一些类具有readonly属性。我怎么能把它放在宣言中?
答案 0 :(得分:5)
奇怪的是,你不能在接口或环境声明中指定getter和setter。
最接近的是:
interface Test {
Prop: number;
}
class Example implements Test {
private prop: number;
get Prop() :number {
return this.prop;
}
}
不幸的是,这并不妨碍实现允许setter,并且在环境声明的上下文中它不会阻止调用者尝试设置值。
答案 1 :(得分: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
有关详细信息,请参阅here。