簡體   English   中英

在Angular /客戶端項目中使用轉譯為JavaScript的Kotlin代碼

[英]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 (我們嘗試過plainumdamd ),我們的方法名稱在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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM