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

时间:2016-08-09 20:53:38

标签: typescript

在typescript类中,有没有办法为setter方法和类属性使用相同的名称?这将使设置和获取值更加一致。例如:

myClass.myValue = "Hello"; //Setter.
var myValue = myClass.myValue; //Getter.

class myClass {
   myValue: string;

   myValue(inArg: string) {
      alert("inArg: " + inArg);
   }
}

1 个答案:

答案 0 :(得分:2)

不,这与在javascript中创建类的方式有关:

var MyClass = (function () {
    function MyClass() {
        this.myValue = "string";
    }
    MyClass.prototype.myValue = function (inArg) {
        alert("inArg: " + inArg);
    };
    return MyClass;
}());

然后你这样做:

let obj = new MyClass();

您创建了一个类的实例,其中包含原型中存在的所有内容,包括myValue方法,但是在构造函数中,您使用字符串覆盖属性myValue

这与此类似:

class MyClass {
    myValue(inArg: string) {
      alert("inArg: " + inArg);
   }
}

let obj = new MyClass();
obj.myValue = "a string";

唯一的区别是,在此示例中,您仅为myValue覆盖obj,而不覆盖MyClass的其他实例,而在您的示例中,它将为所有实例执行此操作,因为它在构造函数。

相关问题