[英]Using Kotlin code transpiled to JavaScript in an Angular/client-side project
我們有一個Kotlin項目,旨在與客戶端共享某些類,因此配置了我們的kotlin-maven-plugin
以將某些Kotlin類吐出為JavaScript:
<configuration>
<outputFile>${project.basedir}/angular/src/assets/kotlin_classes.js</outputFile>
<moduleKind>commonjs</moduleKind>
</configuration>
使用Kotlin類,如下所示:
class SomeKotlinClass {
fun someMethod(name: String): String {
return "Happy Birthday, " + name;
}
}
我們遇到的問題是,無論我們使用哪種moduleKind
(我們嘗試過plain
, umd
, amd
),我們的方法名稱在JavaScript文件中似乎都有一個奇數/亂碼的后綴:
SomeKotlinClass.prototype.someMethod_6q3v0v$ = function (name) {
return 'Happy Birthday, ' + name
};
這意味着我們在Angular / TypeScript中的調用不能是someMethod()
,而必須是someMethod_6q3v0v$()
,這對我們不起作用。
我的插件配置或在項目中包含此JavaScript文件的方式有問題嗎? 我們到那里已經99%了,但是最后(奇怪)的障礙阻礙了我們。
可以使用@JSName(...)
注釋設置Javascript中已編譯方法的名稱。
在這種情況下:
class SomeKotlinClass {
@JsName("someMethod")
fun someMethod(name: String): String {
return "Happy Birthday, " + name;
}
}
然后將其編譯為:
SomeKotlinClass.prototype.someMethod = function (name) {
return 'Happy Birthday, ' + name;
};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.