我正在尝试为属性创建get和set方法:
private _name: string;
Name() {
get:
{
return this._name;
}
set:
{
this._name = ???;
}
}
设置值的关键字是什么?
Ezward已经提供了一个很好的答案,但我注意到其中一个评论问它是如何使用的。对于像我这样遇到这个问题的人来说,我认为在Typescript网站上有一个关于getters和setters的官方文档的链接会很有用,因为这很好地解释了这个问题,希望在更改时始终保持最新,并展示了示例用法:
http://www.typescriptlang.org/docs/handbook/classes.html
特别是,对于那些不熟悉它的人,请注意,您没有将“get”一词合并到对getter的调用中(对于setter也是如此):
var myBar = myFoo.getBar(); // wrong
var myBar = myFoo.get('bar'); // wrong
您应该简单地执行以下操作:
var myBar = myFoo.bar; // correct (get)
myFoo.bar = true; // correct (set) (false is correct too obviously!)
给定一个类,如:
class foo {
private _bar:boolean = false;
get bar():boolean {
return this._bar;
}
set bar(theBar:boolean) {
this._bar = theBar;
}
}
则将调用私有“_bar”属性的“bar”getter。
TypeScript使用与ActionScript3类似的getter/setter语法。
class foo {
private _bar: boolean = false;
get bar(): boolean {
return this._bar;
}
set bar(value: boolean) {
this._bar = value;
}
}
这将使用ECMAScript5object.defineProperty()
特性生成此JavaScript。
var foo = (function () {
function foo() {
this._bar = false;
}
Object.defineProperty(foo.prototype, "bar", {
get: function () {
return this._bar;
},
set: function (value) {
this._bar = value;
},
enumerable: true,
configurable: true
});
return foo;
})();
所以要使用它,
var myFoo = new foo();
if(myFoo.bar) { // calls the getter
myFoo.bar = false; // calls the setter and passes false
}
但是,为了使用它,您必须确保TypeScript编译器以ECMAScript5为目标。如果您正在运行命令行编译器,请像这样使用--target
标志;
tsc --target ES5
如果使用的是Visual Studio,则必须编辑项目文件以将标志添加到TypeScriptCompile生成工具的配置中。您可以在这里看到:
正如@DanFromGermany在下面所建议的,如果您只是读取和写入一个本地属性,如foo.bar=true
,那么使用setter和getter对是矫枉过正的。如果以后需要执行某些操作(如日志记录),则可以随时在读取或写入属性时添加它们。
问题内容: 这是我的工厂: 我在两个控制器MainCtrl和AccountEditCtrl中使用此服务,在MainCtrl中使用getFirstname(),在AccountEditCtrl中使用setFirstname 我的问题是,当我使用userService.setFirstname()时,$ scope.userName不会在MainCtrl中更改。 问题答案: 在某些情况下,$ watc
问题内容: 我需要知道如何让NetBeans使用快捷方式生成getter和setter。 问题答案: 将光标放在班级内部,然后按+ 并从上下文菜单中选择。
在VBA中,我希望从响应中截取字符串,并在随后的请求中设置它。 (如果Excel崩溃,这个cookie似乎丢失了,用户必须再次进行身份验证。我希望为用户设置最后存储的会话ID,这样如果会话在服务器上仍然有效,他们就不必在Excel客户机中重新进行身份验证。) 我看到了一些在线资源,根据这些资源,下面将拉出JSESSIONID cookie,但最后一行总是打印为空: 当我打印时,我看不到任何包含JS
还有一个Java问题(我是noob,我知道):在自定义控件中使用动态属性绑定,在JavaBean中使用动态属性getter,可能吗? 我会解释的。我在自定义控件中广泛使用此功能: 这用于将数据源和字段名称作为参数传递的控件中。这工作,到目前为止还不错。现在,在某些情况下,数据源是托管bean。当解释上述行时,显然会生成代码来获取或设置...某物的值。但具体是什么呢? 我得到这个错误:从com类型的
问题内容: 如何在WordPress中设置,获取和销毁cookie? 我在网上冲浪,但思路不清楚,请帮助我找到方法。 问题答案: 您可以使用PHP在服务器端或客户端使用JavaScript在服务器端检索和操作Cookie。 在PHP中,您可以使用设置Cookie 。请注意,必须在将任何输出发送到浏览器之前完成此操作,这在Wordpress中可能是很大的挑战。您几乎只限于可以通过插件或主题文件(例如
我已经尝试在Objective-C中创建HTTP Get。 它使用中的,并使用选择或。 并通过以下代码设置标头: