Kotlin JavaScript到TypeScript定义文件

时间:2017-03-01 17:00:09

标签: javascript typescript kotlin

我找到了ts2kt library,它将从任意.d.ts个文件中创建Kotlin头文件。但是,我想走向相反的方向。

我想构建一个可以编译为JavaScript的Kotlin库,但我想从TypeScript中使用它。有没有办法让Kotlin生成.d.ts个文件从它暴露的接口?我是以正确的方式接近这个吗?

2 个答案:

答案 0 :(得分:2)

在Kotlin 1.4-M1中添加了对导出TypeScript定义的支持:

预览:TypeScript定义 我们很高兴展示的新Kotlin / JS IR编译器的另一个功能是从Kotlin生成TypeScript定义 码。在以下情况下,JavaScript工具和IDE可以使用这些定义: 在混合应用程序上工作以提供自动完成功能,支持静态 分析器,并使其更容易在JS和TS中包含Kotlin代码 项目。 对于配置为使用ProduceExecutable()的项目中标有@JsExport的顶级声明(请参见上文),带有.d.ts文件的 将生成TypeScript定义。对于上面的代码段,他们 看起来像这样:

    // [...]

    namespace blogpost {

        class KotlinGreeter {

            constructor(who: string)

            greet(): string

        }

        function farewell(who: string): string

    }

    // [...]
   In Kotlin 1.4-M1, these declarations can be found in build/js/packages/<package_name>/kotlin alongside the corresponding,

未打包的JavaScript代码。请注意,由于这只是一个 预览,默认情况下不会将它们添加到分发文件夹中 现在。您可以期望这种行为将来会改变。

来源:

https://blog.jetbrains.com/kotlin/2020/03/kotlin-1-4-m1-released/

答案 1 :(得分:1)

我希望做这样的事情来分享Android和JS之间的模型。有ts-generator库,它接受jvm类并从中生成ts定义。

我还没有尝试过,但理论上应该可行。将库的API(或api实现的接口)分隔为kotlin common module。然后,您可以将api编译为jvm模块,并通过ts-generator运行它以生成ts定义。

也许有一种聪明的方法可以跳过编译到jvm来生成ts定义。