是否可以为 ClojureScript 中的互操作调用避免名称修改?

Can name munging be avoided for an interop call in ClojureScript?

高级编译中

(js/console.log "HELLO"
  js/window.navigator.msSaveBlob
  (.. js/window -navigator -msSaveBlob)
  (aget js/window "navigator" "msSaveBlob")
  js/console.log)

=> HELLO undefined undefined function 函数

我认为这意味着 js/console 有一些提供的 externs,但 navigator 没有(或者至少不是 ms 特定的东西)。

据我所知,避免这种情况的唯一方法是创建一些外部人员?但这似乎不必要地迟钝;你为什么要 js/anything 被捣毁??永不重复 js/anything 互操作不是更有意义吗?

系统功能未修改;只有你自己的功能是。你可能想要 (.log js/console ...) ?

要删除您自己的函数,请将 ^:export 放在 defn 和函数名称之间以完整导出其名称。

Here 是更多信息。

全部参见 "munging" here.

部分