使用 Binding.scala 宏注释时如何在编辑器中抑制 intellij IDEA 错误?

How to suppress intellij IDEA error in editor when using Binding.scala macro annotation?

尽管它在 sbt 控制台中编译和运行。 Intellij 抱怨我应该在编辑器中使用 Binding[Node] 而不是 Elem。

@dom def renderDiv: Binding[Div] = <div>...</div>

从intellij IDEA的角度来看,这个方法returns一个Elemscala.xml.Node的一个子类型, 但是渲染时:

dom.render(document.getElementById("root"),renderDiv)

它需要 org.scalajs.dom.raw.Node

有什么解决方法吗?

可以在范围内放置一个隐式转换 def:

package object xxx {
  implicit def makeIntellijHappy[T<:org.scalajs.dom.raw.Node](x: scala.xml.Node): Binding[T] =
    throw new AssertionError("This should never execute.")
}

在包对象中定义上面的方法,因此它覆盖了整个包。实际上,这个方法永远不会被执行。