我试图让NodeJs与Kotlin一起使用HelloWorld示例here

根据Kotlin JS documentation,对于重载的方法,需要@JsName批注。但是根据我的经验,即使是单个方法也需要它。如果没有此注释,编译器会在方法名称后添加一个后缀,如屏幕截图所示。 javascript - 每个方法都需要@JsName批注吗?-LMLPHP

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

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

最佳答案

Kotlin编译器mangle为所有函数命名,除了不带任何参数的函数。这样做的动机是:您可以在以后添加重载函数,并且这不会破坏代码的二进制兼容性。至于@JsName:这取决于您的目标。我不知道,因此我无法告诉您shuold是否在每种方法上都添加了@JsName注释。是的,如果您正在开发要用于JavaScript的库,则可能需要将@JsName放在要从JavaScript访问的每个函数上。我们将添加另一个注释,以关闭对整个类或文件的操作。

关于javascript - 每个方法都需要@JsName批注吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44276695/

10-09 17:38