typescript - Finnes det en måte å bruke det samme navnet for både en setter-metode og en klasseegenskap?
I en TypeScript-klasse, finnes det en måte å bruke det samme navnet både for en settermethode og klasseegenskap? Dette vil gjøre det mer konsistent å sette og hente verdier. For eksempel:
myClass.myValue = "Hello"; //Setter.
var myValue = myClass.myValue; //Getter.
class myClass {
myValue: string;
myValue(inArg: string) {
alert("inArg: " + inArg);
}
}
Svar #1
Nei, og det har å gjøre med hvordan klassen opprettes i JavaScript:
var MyClass = (function () {
function MyClass() {
this.myValue = "string";
}
MyClass.prototype.myValue = function (inArg) {
alert("inArg: " + inArg);
};
return MyClass;
}());
Når du da gjør:
let obj = new MyClass();
Du oppretter en instans av klassen som har alt som eksisterer i prototypen, inkludert myValue-metoden, men deretter i konstruktøren overstyrer du egenskapen myValue med en streng.
Det er likt som å gjøre dette:
class MyClass {
myValue(inArg: string) {
alert("inArg: " + inArg);
}
}
let obj = new MyClass();
obj.myValue = "a string";
Den eneste forskjellen er at i dette eksemplet overstyrer du myValue bare for obj, men ikke andre instanser av MyClass, mens i ditt eksempel vil det gjøre det for alle instanser fordi det er i konstruktøren.
