在Typescript中,我经常发现自己编写了这种getter / setter样板:
private _length = 0;
get length(): number { return this._length; }
set length(value: number) { this._length = value; }
在C#中,我知道你可以这样写:
public length { get; set; }
是否有相同的方法来简化我的Typescript代码?
答案 0 :(得分:6)
我发现的一种方法是使用在Typescript 1.5中引入的装饰器。实现如下:
function prop(target: Object, name: string) {
Object.defineProperty(target, name, {
get: function() { return this["_" + name]; },
set: function(value) { this["_" + name] = value; },
enumerable: true,
configurable: true
});
}
现在,您可以使用以下代码替换OP中的代码:
@prop length = 0;
需要注意的一点是,_length
属性将添加到对象中。如果您不需要访问它,那就太好了!如果您确实需要使用它,并且希望它自动完成,您可以像这样注释属性:
@prop length = 0; private _length = 0;