Typescript und Typisierung

, Jochen

In der letzten Folge🎙️ ging es ja um Tests. Diesmal geht es um eine weitere Möglichkeit, formal zu spezifizieren, wie sich Software verhalten soll, um dann automatisch überprüfen zu können, ob sich die Implementierung noch in Übereinstimmung mit der Prophezeiung befindet: Typisierung.

Dazu blicken wir diesmal ein wenig über den Tellerrand von Python und sprechen dafür mit Stefan, einem Experten für Typescript 📘. Natürlich sind auch Dominik, Johannes und Jochen wieder mit von der Partie. 🎧 Hört mal rein, wenn ihr mehr über die Rolle von Typisierung in der Softwareentwicklung mit Python 🐍 erfahren wollt.

Shownotes

Unsere E-Mail für Fragen, Anregungen & Kommentare: hallo@python-podcast.de

News

Typing Quadrants aus Fluent Python

Typing Quadrants Image from Fluent Python

Typing

Picks

  • Andreas on 16. Januar 2024 11:26 reply

    Danke für das Aufgreifen dieses Themas und die Gelegenheit die Bedeutung der varianz endlich zu verstehen! Was mich verwirrt hat ist das Wort Subtyp und die Relation zu Vererbung in den genannten Beispielen. Angenommen die Klasse D ist eine Subklasse von B und dementsprechend ist D ein Subtyp von B. Der generische Typ `List[T]` ist im jeweiligen Kontext als kovariant, kontravariant oder invariant deklariert. Dann ist der konkrete Typ `list[D]` ein Subtyp von `List[B]` im kovarianten Kontext, `list[B]` ein Subtyp von `List[D]` im kontravarianten und weder noch im invarianten. Da gibts mMn schon sehr viel Potential für Missverständnisse die im Gespräch kaum zu vermeiden sind. Hoffe nicht noch mehr verwirrt zu haben und freue mich auf die nächste Folge!

    • Jochen Wersdörfer on 16. Januar 2024 18:50 reply

      Hehe, ich habe relativ schnell bereut, diese Frage überhaupt gestellt zu haben 😅. Im Fluent Python Buch wird als Beispiel eine Kantine verwendet, wo es dann Saftspender gibt, die kovarianten Orangensaft spenden und Bio-Mülleimer, in die man auch kontravarianten Kompost werfen kann. Ist ohne Bilder eher schwer zu erklären 😁.

cancel reply

Return to blog