在Typescript中模拟Object.defineProperties

时间:2017-08-08 21:20:27

标签: javascript typescript

如何在Typescript中模拟Javascript&#39的Object.defineProperties?我想使用Typescript语法做这样的事情:

Object.defineProperties(someObject.prototype,
   {
       property: {get: function() { return value; } },
       anotherProperty {get: function() { return somethingElse; } }
   });

任何指针?谢谢!

2 个答案:

答案 0 :(得分:1)

看起来你需要的只是吸气剂(设定者的工作方式类似)。

可以在TS Playground page上查看。

以下是一个简单的例子:

class MyClass {
    private _myProp: string = "myPropValue";
    get myProp(): string {
        alert("get myProp: " + this._myProp);

        return this._myProp;
    }
    set myProp(value: string) {
        alert("set myProp: " + value);

        this._myProp = value;
    }
}

const myObj = new MyClass();
const myPropValue = myObj.myProp;
myObj.myProp = "newValue";
const myPropNewValue = myObj.myProp;

更多信息可在TS Handbook

中找到

答案 1 :(得分:0)

您的代码逻辑不需要更改,DefineProperties函数可以保留,您只需要让打字稿知道对象的外观

首先,为结果对象创建一个接口。这些getter看起来像接口中的普通readonly属性。

然后将templary变量定义为type并附加所有属性/ getter

最后创建一个新的类型变量,该变量使用所有getter引用已安装的对象 const myObjectWithGetters = tempGetterObj