deftype
erstellt ein leeres Objekt, das ein Protokoll implementiert.
defrecord
erstellt eine unveränderliche persistente Karte, die ein Protokoll implementiert.
Welche zu verwenden hängt davon ab, was Sie wollen. Willst du eine vollständige ClojureScript-Datenstruktur? Dann benutze einen Datensatz. Willst du nur ein bloßes Ding, das nur ein Protokoll erfüllt? Dann benutze einen Typ.
Die zwei Bits der Dokumentation, auf die Sie verweisen, verwenden Typen, weil sie versuchen, Protokolle auf der grundlegendsten Ebene darzustellen, und Typen haben sozusagen weniger "weiter" als Datensätze.
Allerdings müssen die meisten realen Anwendungen von objektartigen Dingen in Clojure/ClojureScript Datenfelder zusammen mit dem Objekt speichern, und dafür sollten Sie einen Datensatz aus dem gleichen Grund verwenden, aus dem Sie einen verwenden sollten Clojures unveränderliche Sammlungen.