Gibt es eine Möglichkeit, dies in TypeScript zu erreichen?
Warum nicht. Weil es in einfachem JavaScript gemacht werden kann, sollte es auch in TypeScript leicht erreicht werden. Wie fast immer bei Funktionen, ist Scope das Schlüsselwort für unseren Ansatz. Ein Konstruktor wird dann natürlich nur als eine Schließung missbraucht, ohne Typen zu erzeugen, die z.B. Container
über den Operator typeof
. Eine solche Factory-Funktion gibt nur eine andere Funktion zurück, die dann als Getter/Setter für den eingeschlossenen Anfangswert des Konstruktors verwendet wird.
Typoskript Beispiel ...
class Container {
constructor(storageValue: any) {
return (function (value: any) {
if (arguments.length !== 0) {
storageValue = value;
}
return storageValue;
});
}
}
... im Klar JavaScript ...
var Container = (function ContainerClass() {
var Constructor = (function Container (storageValue) {
return (function (value) {
if (arguments.length !== 0) {
storageValue = value;
}
return storageValue;
});
});
return Constructor;
}());
var a = new Container(24);
console.log("a() : ", a()); // 24
console.log("a(4) : ", a(4)); // 4
console.log("a() : ", a()); // 4
var b = new Container(72);
console.log("b() : ", b()); // 72
console.log("b(5) : ", b(5)); // 5
console.log("b() : ", b()); // 5
console.log("a() : ", a()); // 4
Klingt wie, welche Eigenschaften sind für. – Stilgar