Imagine the task is to create some utility lib in clojurescript so it can be used from JS.
For example, let\'s say I want to produce an equivalent of:
(defprotocol IFoo
(bar [this x]))
(deftype Foo [a b c]
IFoo
(bar [_ x]
(+ a b c x)))
(def afoo (Foo. 1 2 3))
(bar afoo 3) ; >> 9
Is the idiomatic way to do this.
This was solved with JIRA CLJS-83 by adding a magic "Object" protocol to the deftype:
(deftype Foo [a b c]
Object
(bar [this x] (+ a b c x)))
(def afoo (Foo. 1 2 3))
(.bar afoo 3) ; >> 9