我想在模块中创建一个带有get/set属性的变量.我看到了一些在类中创建get/set属性的工作示例,如下所示:
class MyClass {
private view;
get View() { return this.view; }
set View(value) { this.view = value }
}
Run Code Online (Sandbox Code Playgroud)
但是我想在一个模块中做同样的事情:
module MyModule {
export var view;
//I want to create get/set methods for view property here
}
Run Code Online (Sandbox Code Playgroud)
我怎么做 ?
Rya*_*ugh 11
我认为这只是一种疏忽; 我会向设计团队提出这个问题(我没有看到任何明显的原因,除了"我们还没有实现它"之外,它将被禁止).解决缺乏一流的语言支持是相当简单的:
module Bar {
var _qua = 42;
declare export var qua: number;
Object.defineProperty(Bar, 'qua', {
get: function() { return _qua; },
set: function(value) { _qua = value; }
});
}
// Works
var x = Bar.qua;
console.log(x);
Bar.qua = 19;
console.log(Bar.qua);
Run Code Online (Sandbox Code Playgroud)
存取器仅适用于"成员".成员只能成为课程的一部分,至少这是打字稿的方式.
访问器是在类原型上定义的,这是模块没有的东西.如果你真的想要,你可以手动定义它,它确实有效.
module MyModule {
var view;
export var View;
Object.defineProperty(MyModule, "View", {
get: function () {
console.log(1);
return view;
},
set: function (val) {
console.log(2, val);
view = val;
},
enumerable: true,
configurable: true
});
}
MyModule.View = 555;
window["mm"] = MyModule.View;
Run Code Online (Sandbox Code Playgroud)
正如所料,我得到了输出:
> 2 555
> 1
Run Code Online (Sandbox Code Playgroud)
虽然老实说我不会:)
| 归档时间: |
|
| 查看次数: |
4170 次 |
| 最近记录: |