我试图让NodeJs与Kotlin一起使用HelloWorld示例here。
根据Kotlin JS documentation,对于重载的方法,需要@JsName批注。但是根据我的经验,即使是单个方法也需要它。如果没有此注释,编译器会在方法名称后添加一个后缀,如屏幕截图所示。
这是一个错误吗?还是我错过了什么?
我正在使用NPM提供的Kotlin 1.1.0模块(如果需要,请检查上面的GitHub链接以获取完整的代码库)。
最佳答案
Kotlin编译器mangle为所有函数命名,除了不带任何参数的函数。这样做的动机是:您可以在以后添加重载函数,并且这不会破坏代码的二进制兼容性。至于@JsName
:这取决于您的目标。我不知道,因此我无法告诉您shuold是否在每种方法上都添加了@JsName
注释。是的,如果您正在开发要用于JavaScript的库,则可能需要将@JsName
放在要从JavaScript访问的每个函数上。我们将添加另一个注释,以关闭对整个类或文件的操作。
关于javascript - 每个方法都需要@JsName批注吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44276695/