Rough sketch follows.
To prevent the issue, from C++ style operator overloading, of an operator having to be defined on each type involved in th operation, we use based on the syntax for function declarations. This will allow independent definition without any duplication.
operator +(a: Vector2, b: Vector2): Vector2 {
...