如何在多平台 Kotlin 项目中隐藏 JavaScript 目标的包结构

ren*_*ene 5 kotlin kotlin-multiplatform

我正在使用 Kotlin 多平台构建一个库,该库应该由本机 JVM 和 Node 应用程序使用。我正在努力为 Node 版本提供惯用的 API,因为 Kotlin将包结构公开给 JavaScript

我希望在包内的公共源集中定义我的实体com.company.myclientlib.common

// sourceSet: common
package com.company.myclientlib.common

data class Product(
    val id: String,
    val name: String,
    val displayName: String
    // ...
)
Run Code Online (Sandbox Code Playgroud)

这样Product在 Node 应用程序中创建新的 s 看起来像:

// sourceSet: common
package com.company.myclientlib.common

data class Product(
    val id: String,
    val name: String,
    val displayName: String
    // ...
)
Run Code Online (Sandbox Code Playgroud)

我已经尝试去@JsName("Product")上课了Product。尽管名称可以影响@JsName,但包仍然会以相同的方式暴露。

有没有什么方法可以不暴露 JavaScript 中的包,Product而无需重新实现库代码的 JavaScript sourceSet 中的类型?

注意:公开 JVM 目标的包就可以了。

K.H*_*.H. 0

我相信您正在寻找JsQualifier