在打字稿类中,有没有办法对 setter 方法和类属性使用相同的名称?这将使设置和获取值更加一致。例如:
myClass.myValue = "Hello"; //Setter.
var myValue = myClass.myValue; //Getter.
class myClass {
myValue: string;
myValue(inArg: string) {
alert("inArg: " + inArg);
}
}
Run Code Online (Sandbox Code Playgroud)
不,这与在 javascript 中创建类的方式有关:
var MyClass = (function () {
function MyClass() {
this.myValue = "string";
}
MyClass.prototype.myValue = function (inArg) {
alert("inArg: " + inArg);
};
return MyClass;
}());
Run Code Online (Sandbox Code Playgroud)
当你这样做时:
let obj = new MyClass();
Run Code Online (Sandbox Code Playgroud)
您创建了一个类的实例,该实例具有原型中存在的所有内容,包括myValue
方法,但随后在构造函数中您myValue
用字符串覆盖了该属性。
它类似于这样做:
class MyClass {
myValue(inArg: string) {
alert("inArg: " + inArg);
}
}
let obj = new MyClass();
obj.myValue = "a string";
Run Code Online (Sandbox Code Playgroud)
唯一的区别是,在这个例子中,你myValue
只覆盖了 的obj
其他实例MyClass
,而不是其他实例,而在你的例子中,它将为所有实例覆盖,因为它在构造函数中。