Aktuell verwenden viele von uns in ES5 das folgende Muster in Frameworks, um Klassen und Klassenvariablen zu erstellen, was bequem ist:
// ES 5
FrameWork.Class({
variable: 'string',
variable2: true,
init: function(){
},
addItem: function(){
}
});
In ES6 können Klassen nativ erstellt werden, es gibt jedoch keine Option für Klassenvariablen:
// ES6
class MyClass {
const MY_CONST = 'string'; // <-- dies ist in ES6 nicht möglich
constructor(){
this.MY_CONST;
}
}
Leider funktioniert das oben genannte nicht, da Klassen nur Methoden enthalten können.
Ich verstehe, dass ich this.myVar = true
im constructor
verwenden kann ... aber ich möchte meinen Konstruktor nicht 'verunreinigen', besonders wenn ich 20-30+ Parameter für eine größere Klasse habe.
Ich habe über viele Möglichkeiten nachgedacht, dieses Problem zu lösen, aber noch keine guten gefunden. (Zum Beispiel: Erstellen eines ClassConfig
-Handlers und Übergeben eines parameter
-Objekts, das separat von der Klasse deklariert wird. Dann würde der Handler an die Klasse angehängt werden. Ich habe auch über die Integration von WeakMaps
nachgedacht.)
Welche Ideen hätten Sie, um mit dieser Situation umzugehen?