【发布时间】:2017-02-15 10:28:04
【问题描述】:
我有一个 JavaScript 对象,它动态地允许成员作为访问器属性绑定到对象的实例:
来源
function DynamicObject(obj) {
for (var prop in obj) {
Object.defineProperty(this, prop, {
get: function () { return obj[prop]; },
set: function (value) { obj[prop] = value; },
enumerable: true,
configurable: false
});
}
}
用法
var obj = new DynamicObject({
name: "John Smith",
email: "john.smith@test.net",
id: 1
});
创建obj 时,构造函数参数的成员绑定到obj 作为访问器属性。这些出现在智能感知中
我想知道是否可以在 TypeScript 中对这种行为(包括智能感知)进行建模?
备注
当你在 TypeScript 中运行这段代码时,没有智能感知,因为一切都是 any,所以 TypeScript 并不真正知道发生了什么。
【问题讨论】:
-
我很好奇你为什么要这样做而不是只使用基本的对象文字。只是为了
configurable: false?您可以只使用Object.freeze或Object.seal来执行类似的任务... -
@MikeMcCaughan 不,这里的优势实际上在于 get/set 功能,而不是可配置性。
-
那么,您的“真实”代码对 get/set 做了一些更有趣的事情吗?太酷了。
标签: javascript typescript