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

标签 kotlin kotlin-multiplatform

我正在使用 Kotlin 多平台构建一个库,它应该被 native JVM 和 Node 应用程序使用。我正在努力为 Node 版本提供惯用的 API,因为 Kotlin exposes the package structure to JavaScript .

我想在 com.company.myclientlib.common 包内的公共(public) sourceSet 中定义我的实体:

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

data class Product(
    val id: String,
    val name: String,
    val displayName: String
    // ...
)

在 Node 应用程序中创建新的 Product 如下所示:

// Node application code
const lib = require("lib")
const product = new lib.com.company.myclientlib.common.Product("id", "name", ...)

我尝试将 @JsName("Product") 放在 Product 类中。虽然名称可以影响 @JsName ,包仍将以相同的方式公开。

有没有办法不在 JavaScript 中公开 Product 的包,而无需在库代码的 JavaScript sourceSet 中重新实现类型?

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

最佳答案

我相信您正在寻找JsQualifier

关于kotlin - 如何在多平台 Kotlin 项目中隐藏 JavaScript 目标的包结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59374620/

相关文章:

android - 绑定(bind)变量为null..如何让UI中的观察者等待查询的Livedata从数据库中执行?

ios - 初始化程序 `init(:_rowContent:)` 要求 `Type` 确认为 `Identifiable`

intellij-idea - Kotlin 多平台 : sharing actual class implementation for multiple targets (iOS, macOS)

android - Kotlin MultiPlatform - 发布 Android 库失败

java - Kotlin 的 Flyway 迁移失败

android - 使用 Kotlin 作为 Android 和 iOS 的 RestAPI 解析器

java - Android MaterialCardView 切角样式

kotlin - 如何在Kotlin的Iterator实现中处理可为空的值?

ios - 我可以使用 Kotlin 在 Windows 上开发适用于 iOS 的应用程序吗?

websocket - 使用 Kotlin 时是否有适用于 iOS 的 WebSocket 客户端库?