2017-08-08 38 views
0

如何在Typescript中模擬Javascript的Object.defineProperties?我想用Typescript語法來做這樣的事情:在Typescript中模擬Object.defineProperties

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

任何指針?謝謝!

+0

爲什麼你需要「模擬」它?代碼的工作原理是什麼? – Bergi

+0

請注意,您定義的'property'和'anotherProperty'都不是函數,它們是getter屬性。 – Bergi

+0

哦,對了,你的確寫過'Cesium.defineProperties'。你爲什麼不使用Object.defineProperties? – Bergi

回答

1

它看起來像所有引用您已設置對象你需要的只是getters(setters的工作原理類似)。

可以在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找到。

+0

的混淆,正是我所期待的,謝謝! – anon

0

你的代碼邏輯並不需要改變,功能可以保持的DefineProperties,你只需要讓打字稿知道物體的外觀

首先,創建一個用於生成的對象的接口。這些getter可以看起來像接口中的普通只讀屬性。

然後定義一個templary變量類型和連接的所有屬性/干將

最後創建一個新的類型的變量與所有干將 常量myObjectWithGetters = tempGetterObj

相關問題