Так я о том же. Эти идеи еще год назад были реализована в AS. Просто сравни:
AS:
class Vec2 {
constructor(public x: f64, public y: f64) {}
@operator.binary("+") // или просто
@operator("+")
private static add(a: Vec2, b: Vec2): Vec2 { return new Vec2(a.x + b.x, a.y + b.y) }
}
JS proposal:
@Operators.overloaded
class Vec2 extends Operators {
constructor(x, y) { this.x = x; this.y = y }
@Operators.define("+")
#plus(a, b) { return new Vec2(a.x + b.x, a.y + b.y) }
}
Хотя как по мне пропозал выглядит вербозно