Isso simplificaria muitos casos de uso se pudéssemos substituir os operadores relacionais, de igualdade, aditivos e multiplicativos.
Meus pensamentos iniciais sobre como isso funcionaria é que as funções substituiriam os operadores por funções ao compilar para JavaScript.
class MyClass {
constructor() {
}
public Operator > (value: any):boolean {
// compare value
}
}
var myClass = new MyClass();
if(myClass > otherValue){
// Do stuff
}
Torna-se:
var MyClass = (function () {
function MyClass() {
}
MyClass.prototype.greaterThan = function (value) {
// compare value
};
return MyClass;
})();
var myClass = new MyClass();
if (myClass.greaterThan(otherValue) {
// do Stuff
}
Uma coisa que evitamos fazer é a emissão orientada por tipo. A ideia é que os tipos TypeScript não tenham influência em tempo de execução - o código é o mais próximo do JavaScript análogo que você teria escrito. Dado isso, substituir em uma chamada de método por um operador seria contra isso.
Além disso, isso está relacionado ao #2319, então vou fechar isso como uma duplicata.
Eu escrevi um framework ORM em typescript. Ainda é novo e suporta apenas mysql atualmente. Sua arquitetura é baseada no framework de entidade.
https://www.npmjs.com/package/es-entity
Habilitar a sobrecarga do operador dará suporte à criação de consultas semelhantes a 'LINQ'.
Você pode adicionar esse recurso como uma extensão opcional, como o recurso Decorators com implementação experimental e opção de compilador. Espero ver isso em texto datilografado.
Comentários muito úteis
Eu escrevi um framework ORM em typescript. Ainda é novo e suporta apenas mysql atualmente. Sua arquitetura é baseada no framework de entidade.
https://www.npmjs.com/package/es-entity
Habilitar a sobrecarga do operador dará suporte à criação de consultas semelhantes a 'LINQ'.
Você pode adicionar esse recurso como uma extensão opcional, como o recurso Decorators com implementação experimental e opção de compilador. Espero ver isso em texto datilografado.