有没有办法对 setter 方法和类属性使用相同的名称?

Lam*_*ert 7 typescript

在打字稿类中,有没有办法对 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)

Nit*_*mer 5

不,这与在 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,而不是其他实例,而在你的例子中,它将为所有实例覆盖,因为它在构造函数中。