gpt4 book ai didi

scala.js - 修复 "You may not export a method of a subclass of js.Any"

转载 作者:行者123 更新时间:2023-12-02 17:32:34 24 4
gpt4 key购买 nike

我正在尝试基于 typescript 类型信息创建绑定(bind)到 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。在这里,您为 Scala.js 使用的 JavaScript 对象定义了一个接口(interface),因此导出没有任何意义。

我看到您正试图为注释指定一个不同的名称。为此,在外观类型中,还有另一个注释:@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 - 修复 "You may not export a method of a subclass of js.Any",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31074119/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com