2017-09-26 645 views
0

我怎麼會寫一個JavaScript代碼看起來像這樣如何編寫的getter/setter類型定義(打字稿)

library.js類型定義文件(d.ts):

Object.defineProperty(SceneNode.prototype, 'name', { 
    set: function(name) 
    { 
     this.setName(name); 
    }, 
    get: function(){ 
     return this._name; 
    }, 
    enumerable: true 
}); 

我到目前爲止有:

library.d.ts

class SceneNode{ 
    private _name: string; 
} 

但是,我將如何將getter/setter包含到類型定義中?

編輯1:

澄清

+0

是旨在使用的setter/getter或可以使兩個函數'的getName()'和'的setName()'? – Mouneer

+0

我試圖編寫d.ts文件的庫是用getters/setter這種格式編寫的: Object.defineProperty(SceneNode.prototype,'name',{ –

+0

@Mouneer爲什麼當JS允許真正的屬性訪問器? – evolutionxbox

回答

1

添加文件名你只定義類型,就好像是一個簡單的屬性。 getter和setter的要點是,當它實際上有些代碼正在運行時,它看起來好像只是一個簡單的屬性,但它不會改變類型視圖中的接口。

因此,所有你需要的是:

class SceneNode{ 
    private _name: string; 
    public name: string; 
} 
+0

只需一個後續問題:我需要私人定義還是公衆定義,或者公衆是否足夠?該對象本身具有'''_name'''和''''''' –

+1

我會同時包含這兩個,因爲它更準確地描述了對象。如果你正在定義一個接口,那麼你將不會有私人成員,但對於你應該擁有的課程。但這只是意見:省略私人成員可能不會破壞任何東西。 – Duncan

+0

非常感謝你 –