【问题标题】:Kotlin/JS missing fun when compiledKotlin/JS 编译时缺少乐趣
【发布时间】:2021-10-25 15:10:42
【问题描述】:

我正在尝试将 Kotlin 编译为 JavaScript。 它在 JavaScript 项目中用作 npm 模块。

例如,当我编写一个像下面这样的类时,我无法从 JavaScript 中看到像 fun hoge (fuga: SomeClass) 这样的方法。它将是未定义的。

环境

  • Kotlin 1.5.31
  • gradle 7.0.2

Fuga.kt

package com.example

class Fuga {
  fun hoge(someClass: SomeClass) {
     // Do something
  }

  fun hoge2() = "Hello"
}

JavaScript(Typescript) 项目

import F from "npm_module";

const v = new F.com.example.Fuga();

console.log(v.hoge2()); // displayed Hello

v.hoge(someClass); // hoge is undefined

为什么缺少 hoge(someClass) ? 如何从 JavaScript 项目中引用 hoge(someClass)

谢谢。

【问题讨论】:

    标签: javascript kotlin kotlin-multiplatform


    【解决方案1】:

    在构建到 js 时,缺少函数 hoge(someClass) 被重命名。 例如,hoge_xyz$

    在构建到 js 时,缺少函数 hoge (someClass) 被重命名。

    例如,hoge_xyz $

    通过使用@JsName,我能够使用 Js 中的预期名称来引用它而无需重命名。

    package com.example
    
    class Fuga {
    
      @JsName("hoge")
      fun hoge(someClass: SomeClass) {
         // Do something
      }
    
      fun hoge2() = "Hello"
    }
    

    【讨论】:

      猜你喜欢
      • 2019-07-23
      • 1970-01-01
      • 2018-08-14
      • 1970-01-01
      • 2016-04-05
      • 1970-01-01
      • 2015-03-25
      • 2016-07-11
      • 2016-09-27
      相关资源
      最近更新 更多