方差 js.Array

Variance with js.Array

我有一个 javascript 方法接受 js.Arrays 可以包含多种类型的对象。例如 js.Dates 或整数或字符串

如何在不必转换任何这些类型的情况下对其进行建模。

def domain(p: js.Array[js.Any])

不适用于

domain(js.Array(new js.Date(2015,1,1))

因为 js.Array 是不变的。

def domain[T <: js.Any](p: js.Array[T])

不适用于

domain(js.Array("Test")) or domain(js.Array(0,2))

因为 String 和 Int 不继承自 js.Any。 我已经看到有一个从 Int 到 js.Any 的隐式转换,但这似乎并没有启动

 inferred type arguments [Int] do not conform to method domain's type
 parameter bounds [T <: scala.scalajs.js.Any]

反正我是有点纳闷。 Intellij 没有向我显示错误,而来自 sbt 的 fastOptJS 抛出编译错误。

找到解决方案。上视图边界:

def domain[T <% js.Any](p: js.Array[T])