Simplificaría muchos casos de uso si pudiéramos anular los operadores relacionales, de igualdad, aditivos y multiplicativos.
Mis pensamientos iniciales sobre cómo funcionaría esto es que las funciones reemplazarían a los operadores con funciones al compilar en JavaScript.
class MyClass {
constructor() {
}
public Operator > (value: any):boolean {
// compare value
}
}
var myClass = new MyClass();
if(myClass > otherValue){
// Do stuff
}
se convierte en:
var MyClass = (function () {
function MyClass() {
}
MyClass.prototype.greaterThan = function (value) {
// compare value
};
return MyClass;
})();
var myClass = new MyClass();
if (myClass.greaterThan(otherValue) {
// do Stuff
}
Una cosa que evitamos hacer es la emisión basada en tipos. La idea es que los tipos de TypeScript no tengan relación con el tiempo de ejecución: el código es lo más parecido al JavaScript análogo que habría escrito. Dado eso, sustituir una llamada de método por un operador iría en contra de eso.
Aparte de eso, esto está relacionado con el #2319, así que lo cerraré como un duplicado.
He escrito un marco ORM en mecanografiado. Todavía es nuevo y solo es compatible con mysql actualmente. Su arquitectura se basa en el marco de la entidad.
https://www.npmjs.com/package/es-entidad
Habilitar la sobrecarga de operadores admitirá la creación de consultas similares a 'LINQ'.
Puede agregar esta función como una extensión opcional como la función Decorators con implementación experimental y opción de compilador. Espero ver esto en mecanografiado.
Comentario más útil
He escrito un marco ORM en mecanografiado. Todavía es nuevo y solo es compatible con mysql actualmente. Su arquitectura se basa en el marco de la entidad.
https://www.npmjs.com/package/es-entidad
Habilitar la sobrecarga de operadores admitirá la creación de consultas similares a 'LINQ'.
Puede agregar esta función como una extensión opcional como la función Decorators con implementación experimental y opción de compilador. Espero ver esto en mecanografiado.