除非我遗漏了某些内容,否则我将协议定义放在哪个.h文件中似乎是随意的.我甚至想知道它是否可以在它自己的.h文件中...(在Java中,它在它自己的文件中)
我注意到typescript 2.0将支持readonly类属性,但它尚不可用.这篇文章的原因是我希望能够明智地知道我今天如何编写代码,以便以后可以轻松过渡.
我想以这种方式使用具有只读属性的类:
let widget = new Widget(110, 220); // width, height
//...
widget.width(200); // to modify the width, I use a setter with validation
widget.width = 300; // note: I want this to be a compile time error
//...
let w = widget.width; // and later I want to get/draw the current width
Run Code Online (Sandbox Code Playgroud)
...但由于fn和属性具有相同的名称,我无法使其工作 - 所以我将fn名称切换为setWidth.我宁愿不用_前缀所有readonly属性,因为在过去我发现痛苦不仅仅是键入额外字符的麻烦.由于TS的类型检查,我不需要视觉提醒,该属性是只读(或私有).
Q1:如果width是widget类的readonly属性,那么上面的工作在typescript 2中会如下所示吗?
export class widget {
readonly width:number; // doesn't work in TS 1.8
setWidth(w:number) {
this.width = w;
}
}
Run Code Online (Sandbox Code Playgroud)
在短期内,我可以将该属性公开,以便我可以直接访问,具有我可能直接设置属性的"风险" - …