deftype
crea un oggetto bare-bone che implementa un protocollo.
defrecord
crea una mappa persistente immutabile che implementa un protocollo.
Quale da utilizzare dipende da ciò che si desidera. Vuoi una struttura dati ClojureScript completa? Quindi usa un record. Vuoi solo una cosa nuda che non fa altro che soddisfare un protocollo? Quindi usa un tipo.
I due bit di documentazione che si riferiscono usano i tipi perché stanno cercando di illustrare i protocolli al livello più elementare, ei tipi hanno meno "successo" dei record, per così dire.
Tuttavia, la maggior parte degli usi reali di oggetti simili a oggetti in Clojure/ClojureScript devono memorizzare campi di dati insieme all'oggetto, e per questo è necessario utilizzare enfaticamente un record, per lo stesso motivo si dovrebbe usare uno qualsiasi dei Le collezioni immutabili di Clojure.