Moin!
Das ES2015-Pendant[1] zu deinem Beispiel, sieht der TypeScript-Variante auch sehr ähnlich:
const Point = ((_x = Symbol(),_y = Symbol()) =>
class Point {
constructor (x=0,y=0) {
this[_x] = x;
this[_y] = y;
}
get x() { return this[_x] }
get y() { return this[_y] }
})();
Das werte ich als dickes Plus für TypeScript (verglichen mit anderen Dialekten wie CoffeeScript); da es sich um eine Supermenge von JavaScript handelt, muss bereits erworbenes Wissen nicht neu erlernt werden, sondern kann direkt auf TypeScript übertragen werden.
Der ES2015-Code hat bei diesem Beispiel zwei größere Nachteile:
- Für die private Kapselung ist ein verboser Workaround mit Closure und Symbols notwendig.
- Da die Typannotationen wegfallen, verliert man sinnvolle Werkzeugunterstützungen, wie Typechecking und teilweise Autovervollständigung.