每个方法都需要 @JsName 注释吗?

Is @JsName annotation required for every method?

我试图让 NodeJs 与 Kotlin 一起工作,作为一个 HelloWorld 示例 here

根据 Kotlin JS documentation, @JsName annotation is required for overloaded methods. But in my experience, it is required even for a single method. Without this annotation the compiler adds a suffix to the method name as shown in the screenshot.

这是一个错误吗?还是我遗漏了什么?

我正在使用 NPM 提供的 Kotlin 1.1.0 模块(如果需要,请查看上面的 GitHub link 以获得完整的代码库)。

Kotlin 编译器对所有函数进行命名,不带任何参数的函数除外。动机是:您可以稍后添加重载函数,这不应该破坏代码的二进制兼容性。至于@JsName:这取决于你的目标。我不知道,因此我无法判断您是否应该在每个方法上添加 @JsName 注释。如果您正在开发一个旨在从 JavaScript 使用的库,是的,您可能需要将 @JsName 放在您希望从 JavaScript 访问的每个函数上。我们将添加另一个注释,关闭整个 class 或文件的重整。