Я пытаюсь использовать конкретный JavaScript каркас, который требует расширения базового класса, чтобы использовать его для приложения.
В основном я хочу сделать следующее как idiomati c ClojureScript.
class Foo extends Bar {
constructor() { super("data") }
method1(args) { /* do stuff */ }
}
Я пытался
(defn foo
[]
(reify
js/Bar
(constructor [this] (super this "data"))
(method1 [this args] )))
Что бы сработало, если бы я создал новый класс из Object, но, как правильно говорит shadow-cljs
, «Символ js / Bar не является протоколом». Кроме того, я не хочу добавлять методы, но создаю подкласс, который наследует некоторые методы и перегружает другие.
Я думал об использовании proxy
, но «ядро / прокси не определено».
Конечно, я мог бы создать экземпляр Bar
и set!
новых методов, но это похоже на то, чтобы отказаться и использовать язык более низкого уровня.