Es würde viele Anwendungsfälle vereinfachen, wenn wir relationale, Gleichheits-, additive und multiplikative Operatoren überschreiben könnten.
Meine ersten Gedanken dazu, wie dies funktionieren würde, sind, dass Funktionen die Operatoren beim Kompilieren in JavaScript durch Funktionen ersetzen würden.
class MyClass {
constructor() {
}
public Operator > (value: any):boolean {
// compare value
}
}
var myClass = new MyClass();
if(myClass > otherValue){
// Do stuff
}
Wird:
var MyClass = (function () {
function MyClass() {
}
MyClass.prototype.greaterThan = function (value) {
// compare value
};
return MyClass;
})();
var myClass = new MyClass();
if (myClass.greaterThan(otherValue) {
// do Stuff
}
Eine Sache, die wir vermeiden, ist die typgesteuerte Ausgabe. Die Idee dahinter ist, dass TypeScript-Typen zur Laufzeit keine Bedeutung haben – der Code kommt dem analogen JavaScript so nahe, wie Sie es geschrieben hätten. Angesichts dessen würde das Ersetzen eines Operators in einem Methodenaufruf dagegen sprechen.
Abgesehen davon hängt dies mit # 2319 zusammen, daher werde ich dies als Duplikat schließen.
Ich habe ein ORM-Framework in Typoskript geschrieben. Es ist noch neu und unterstützt derzeit nur mysql. Seine Architektur basiert auf dem Entity Framework.
https://www.npmjs.com/package/es-entity
Das Aktivieren des Überladens von Operatoren unterstützt das Erstellen von „LINQ“-ähnlichen Abfragen.
Sie können dieses Feature als optionale Erweiterung wie das Decorators-Feature mit experimenteller Implementierung und Compiler-Option hinzufügen. Ich hoffe, dies in Typoskript zu sehen.
Hilfreichster Kommentar
Ich habe ein ORM-Framework in Typoskript geschrieben. Es ist noch neu und unterstützt derzeit nur mysql. Seine Architektur basiert auf dem Entity Framework.
https://www.npmjs.com/package/es-entity
Das Aktivieren des Überladens von Operatoren unterstützt das Erstellen von „LINQ“-ähnlichen Abfragen.
Sie können dieses Feature als optionale Erweiterung wie das Decorators-Feature mit experimenteller Implementierung und Compiler-Option hinzufügen. Ich hoffe, dies in Typoskript zu sehen.