2017-09-26 74 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

非常感谢你 –

相关问题