gpt4 book ai didi

typescript - 减少 Typescript 中的 getter/setter 样板

转载 作者:搜寻专家 更新时间:2023-10-30 21:18:24 25 4
gpt4 key购买 nike

在 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 代码?

最佳答案

我发现的一种方法是使用 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;

关于typescript - 减少 Typescript 中的 getter/setter 样板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30689324/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com