1unitedpower: Falsche Parametertypen

Beitrag lesen

Sollte man prüfen, ob im Parameter das Richtige drin ist, bevor man anfängt damit rumzuspielen?
z.B.: if (typeof args0 !== 'string') oder if (!(args0 instanceof MyClass))

Vor allem ist es sehr gut, dass du dir Gedanken um Typen machst, sie sind eine wirkungsvolle Hilfe beim Aufbau eines mentalen Modells von Programmcode. Ungeachtet, ob du die Typen jedesmal ausschreibst oder du sie dir nur vorstellst, diesen mentalen Trick kannst du immer anwenden. Er hilft mir zum Beispiel dabei klarere Schnittstellen zu designen.

Die konkrete Erscheinungsform und Ausprägung des Typsystems ist natürlich auch interessant. Ich empfehle dir, ein paar Alternativen durchzuprobieren. JavaScript ist eine dynamisch typisierte Sprache (das ist nicht ganz korrekt), das heißt dass Typ-Zugehörigkeiten zur Laufzeit ermittelt werden und nicht von einem Compilerschritt im Voraus sichergestellt werden, sowie es zum Beispiel bei Java gemacht wird. Dynamische Typisierung ist im Allgemeinen flexibler, aber wie ich finde, führt diese zusätzliche Flexibilität nicht dazu, dass man bessere Abstraktionen findet – mit anderen Worten ich nutze diese Flexibilität sowieso nicht aus. Für mich sind deshalb statische Typsysteme der bessere Fit. Für JS gibt es zum Beispiel den statischen Typchecker: Flow. Er arbeitet mit Typeinference und kann dir schon vor der Laufzeit deines Programms sagen, ob Typfehler vorhanden sind. Ich persönlich gehe noch einen Schritt weiter und arbeite gerne mit TypeScript - das ist JavaScript gepaart mit einem sehr hochentwickelten statischem Typsystem. Das stärkste Typsystem im JavaScript-Ökosystem hat zur Zeit PureScript zu bieten - eine funktionale Programmiersprache, die genau wie TypeScript zu JavaScript kompiliert. Sie unterstützt sogenannte "Dependent Types", man spricht auch von proof-carrying Code, also Code der seinen eigenen Korrektheitsbeweis im Typsystem mitführt.