如果我们可以覆盖关系、相等、加法和乘法运算符,它将简化很多用例。
我对这将如何工作的最初想法是,在编译为 JavaScript 时,函数将用函数替换运算符。
class MyClass {
constructor() {
}
public Operator > (value: any):boolean {
// compare value
}
}
var myClass = new MyClass();
if(myClass > otherValue){
// Do stuff
}
变成:
var MyClass = (function () {
function MyClass() {
}
MyClass.prototype.greaterThan = function (value) {
// compare value
};
return MyClass;
})();
var myClass = new MyClass();
if (myClass.greaterThan(otherValue) {
// do Stuff
}
我们避免做的一件事是类型驱动的发射。 这个想法是 TypeScript 类型在运行时没有影响 - 代码与您编写的类似 JavaScript 一样接近。 鉴于此,将方法调用替换为运算符将与此相反。
除此之外,这与#2319 有关,因此我将其作为副本关闭。
我用打字稿写了一个 ORM 框架。 它仍然是新的,目前仅支持 mysql。 它的架构基于实体框架。
https://www.npmjs.com/package/es-entity
启用运算符重载将支持创建类似“LINQ”的查询。
您可以将此功能添加为可选扩展,例如具有实验性实现和编译器选项的装饰器功能。 希望在打字稿中看到这一点。
最有用的评论
我用打字稿写了一个 ORM 框架。 它仍然是新的,目前仅支持 mysql。 它的架构基于实体框架。
https://www.npmjs.com/package/es-entity
启用运算符重载将支持创建类似“LINQ”的查询。
您可以将此功能添加为可选扩展,例如具有实验性实现和编译器选项的装饰器功能。 希望在打字稿中看到这一点。