修复 "You may not export a method of a subclass of js.Any"
Fixing "You may not export a method of a subclass of js.Any"
我正在尝试根据打字稿类型信息创建绑定到 Scala.js 的 Javascript 库(下划线)。它包含如下一些方法:
/**
* Create a shallow-copied clone of the object.
* Any nested objects or arrays will be copied by reference, not duplicated.
* @param object Object to clone.
* @return Copy of `object`.
**/
clone<T>(object: T): T;
问题是,当我尝试将其翻译成 Scala.js:
@JSExport("clone")
def cloneJS[T](`object`: T): T = js.native
我收到以下错误:
You may not export a method of a subclass of js.Any
(当我尝试用 toString()
方法做同样的事情时发生了类似的事情。)
跳过翻译这些方法是否安全,因为 Scala 可以处理它们,或者是否有修复此方法实现的方法?
(我正在使用 Scala.js 0.6.3。)
@JSExport
(和相关注释)旨在将 Scala 对象的方法和属性导出到 JavaScript。在这里,您正在为 JavaScript 对象定义一个供 Scala.js 使用的接口,因此导出没有任何意义。
我看到您正试图为注释指定一个不同的名称。为此,在外观类型中,还有另一个注释:@JSName
。所以你的方法的正确定义应该是:
@JSName("clone")
def cloneJS[T](`object`: T): T = js.native
一切都会好起来的。
顺便说一句,在这种情况下,没有什么可以阻止首先定义名称为 clone
的 Scala 方法(因为有一个参数,它将不同于 Object.clone()
方法) :
def clone[T](`object`: T): T = js.native
同样有效,并且在呼叫站点可能会更好。
我正在尝试根据打字稿类型信息创建绑定到 Scala.js 的 Javascript 库(下划线)。它包含如下一些方法:
/**
* Create a shallow-copied clone of the object.
* Any nested objects or arrays will be copied by reference, not duplicated.
* @param object Object to clone.
* @return Copy of `object`.
**/
clone<T>(object: T): T;
问题是,当我尝试将其翻译成 Scala.js:
@JSExport("clone")
def cloneJS[T](`object`: T): T = js.native
我收到以下错误:
You may not export a method of a subclass of js.Any
(当我尝试用 toString()
方法做同样的事情时发生了类似的事情。)
跳过翻译这些方法是否安全,因为 Scala 可以处理它们,或者是否有修复此方法实现的方法?
(我正在使用 Scala.js 0.6.3。)
@JSExport
(和相关注释)旨在将 Scala 对象的方法和属性导出到 JavaScript。在这里,您正在为 JavaScript 对象定义一个供 Scala.js 使用的接口,因此导出没有任何意义。
我看到您正试图为注释指定一个不同的名称。为此,在外观类型中,还有另一个注释:@JSName
。所以你的方法的正确定义应该是:
@JSName("clone")
def cloneJS[T](`object`: T): T = js.native
一切都会好起来的。
顺便说一句,在这种情况下,没有什么可以阻止首先定义名称为 clone
的 Scala 方法(因为有一个参数,它将不同于 Object.clone()
方法) :
def clone[T](`object`: T): T = js.native
同样有效,并且在呼叫站点可能会更好。