Nick: Private Klassen-Eigenschaften

Beitrag lesen

Hi,

Ich sehe aber keinen Sinn darin, Helferfunktionen u.ä. in der Klassenschnittstelle zu verankern. Eine Klasse sollte doch nur jene Eigenschaften/Methoden nach außen hin sichtbar machen, die direkt in Verbindung mit der Klasse selbst stehen ...

Gut, das ist in JavaScript kein Problem. Dazu braucht es keine privaten Member sondern einfach nur einen Scope, die Helferfunktionen einschließt.

const MyNumber = (() => {
  const next = (a) => a + 1;
  return class {
    constructor() {
      this.number = 0;
    }
    next() {
      return next(this.number);
    }
  };
})();

Wenn ich an Entwicklungsumgebungen denke, würde ich sagen, dass es auch komisch aussähe, wenn ich eine Methode angeboten bekäme, die nicht direkt dokumentiert ist (da eigentlich private).

Meiner Meinung nach sollten Developer wissen, dass das, was eine Entwicklungsumgebung auf einem Objekt sieht, nicht notwendig die Public API ist... Außerdem versteht eine gute Entwicklungsumgebung entweder JSDoc-Annotationen oder separate Typdefinitionen (übrigens unabhängig davon, ob der Code in TypeScript geschrieben ist). Damit passieren keine Verwechslungen.

Nick