Mitgliedsvariablen in ES6-Klassen

Gibt es eine Möglichkeit, die Verwendung der ECMAScript6 class notation zu erklären, entweder durch eine statische Klassen-variable oder ein default-Wert für eine Instanz-variable? Ohne class was ich im Sinn habe würde so geschrieben werden, als

function MyClass(arg) { if(arg) this.arg = arg; }
MyClass.classVariable = 42;
MyClass.prototype.arg = "no arg specified";

Die offensichtlich am meisten ES6-wie die Schreibweise meiner Meinung nach hätte

class MyClass {
    constructor(arg) { if(arg) this.arg = arg; }
    static let classVariable = 42;
    let arg = "no arg specified";
}

Aber das funktioniert nicht, da nach die aktuelle Spezifikation Entwurf die nur Produktionen der ClassElement sind statische und Instanz-Methoden und Semikolons alle von selbst. OK, man kann mit einem paar von get-und Set-Methoden zum erreichen ähnlicher Semantik zu dem, was ich dargelegt, aber ich denke mal zu einer schweren performance-Einbußen und mit wirklich bizarren syntax.

Gibt es einige Entwürfe, die nahelegt, einschließlich der Variablen, die in der class notation, die eine oder andere Weise? Wenn ja, was war die vorgeschlagene syntax, wo wurde es veröffentlicht, wo wurde es erörtert, wie hat sich die Diskussion gehen, und was ist der aktuelle Stand der Dinge an dieser front? So wie es da steht, ist diese Frage nicht beantwortet werden kann, wenn keine solche Sache diskutiert worden, bevor, auf jeder Ebene, aber ich halte das für unwahrscheinlich.


Ein wenig hintergrund: ich bin derzeit liebäugelt mit dem Google closure compiler durchführen von erweiterten Zusammenstellung, Verwendung von ES6 als Eingabe. Damit das funktioniert, brauche ich einen Ort, um meine Art von Anmerkungen für member-Variablen, und ich verwendet, um Sie über syntax, wie /** @type {string} */MyClass.prototype.arg; was ist eine semantische no-op in ECMAScript, aber den Typ von Informationen zu den closure compiler einfach und schön. Ich habe noch keine gefunden, die eine ähnlich nette Art und Weise, dies zu tun mit class konstruieren. Aber wenn Sie Pflege zu Adresse dieser Aspekt, das wäre ein Kommentar. Die Frage oben ist über attributdeklarationen, die mehr sind als no-ops, also das ist, was die Antwort hier soll diskutiert werden.

InformationsquelleAutor der Frage MvG | 2015-02-03

Schreibe einen Kommentar