问题标签 [kotlin-js-interop]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
kotlin - 如何在 Kotlin 中为属性的支持字段设置 JsName?
我在 1.0.x 中使用了 Kotlin 不受支持的 JavaScript 后端,现在正在尝试将我的玩具项目迁移到 1.1.x。它是与 PouchDB 交互的单页 Web 应用程序的最基本部分。要将数据添加到 PouchDB,您需要具有特定属性的 JavaScript 对象_id
和_rev
. 它们也不需要以任何其他属性开头,_
因为它们是由 PouchDB 保留的。
现在,如果我创建一个这样的类,我可以将实例发送到 PouchDB。
但是,如果我做任何事情来使属性虚拟化——让它们覆盖一个接口,或者让类打开并创建一个覆盖它们的子类——_id
字段名称就会变成类似的东西_id_mmz446$_0
,因此 PouchDB 拒绝该对象。如果我应用@JsName("_id")
到该属性,那只会影响生成的 getter 和 setter——它仍然会留下带有损坏名称的支持字段。
此外,对于名称不以 开头的任何虚拟属性_
,PouchDB 将接受该对象,但它只存储带有它们的错位名称的支持字段,而不是命名良好的属性。
我想现在我可以通过让它们不是虚拟的来解决问题。但我正在考虑在 Kotlin 中共享 PouchDoc 和非 PouchDoc 类之间的接口,看来我做不到。
知道我该如何完成这项工作,还是需要更改 Kotlin 语言?
javascript - kotlinc-js 没有输出 kotlin.js 文件
目前正在尝试通过命令行将 Kotlin "Hello, World" 编译为 JS。我已经按照教程进行操作:
我看到正在生成的 Javascript 文件,但我错过了kotlin.js
我希望看到的文件:
https ://kotlinlang.org/docs/tutorials/javascript/kotlin-to-javascript/kotlin-to-javascript .html
生成的 JS 文件的前几行内容如下:
if (typeof kotlin === 'undefined') {
throw new Error("Error loading module 'sample-library'. Its dependency
'kotlin' was not found. Please, check whether 'kotlin' is loaded prior to
'sample-library'.");
}
所以很明显,它是用一个实例化的文件来运行的kotlin
。任何想法为什么我没有看到它?我完全按照所写的教程进行操作。我正在使用来自 homebrew 的最新版本的编译器,即 1.1.2.2
javascript - 每个方法都需要@JsName 注释吗?
我试图让 NodeJs 与 Kotlin 一起工作,以获取 HelloWorld示例。
根据Kotlin JS 文档,重载方法需要 @JsName 注释。但根据我的经验,即使是单一方法也需要它。如果没有此注释,编译器会为方法名称添加一个后缀,如屏幕截图所示。
这是一个错误吗?还是我错过了什么?
我正在使用 NPM 提供的 Kotlin 1.1.0 模块(如果需要,请查看上面的 GitHub 链接以获取完整的代码库)。
kotlin - 以 JavaScript 为目标时如何表示多种类型(联合类型)
我想做的是使用可以是其他三种类型之一的泛型类型。
这是一个带有函数的示例:
上面的代码不起作用,那我该怎么做呢?
promise - 如何从嵌套的 kotlin.js.Promise 创建 Promise?
kotlin.js.Promise
具有then
此声明的功能:
我有两个功能a()
和b()
. 他们都返回一个Promise<Int>
. (它们代表对服务器的一些请求。)我需要将它们组合并创建一个新函数,例如:
但这是不可能的,因为返回类型是Promise<Promise<Int>>
而不是Promise<Int>
。
我认为这在 Javascript 中是可能的。我如何在 Kotlin 中链接 Promise?
kotlin - 用 Kotlin JS 解析 JSON 很有趣解析(文本:字符串):T`?
我该如何使用
fun <T> parse(text: String): T
在 Kotlin JS 中解析 JSON?
例如,我如何解析这个 JSON 字符串?
kotlin - 如何从 Kotlin 调用需要 jQuery ajax 设置对象的 javascript 函数?
我需要转换下面的代码,它在 jQuery 中使用了一个叫做ajax 设置的东西(在下面的调用里面的 javascript 中使用它create()
来创建一个CouchDB 数据库)
我已经定义了这些
但我坚持如何转换 javascript 代码
jCouch.db.create("mydb")
. 现在呢?
kotlin - 使用动态属性名称将属性分配给 javascript 对象
我想做这样的事情,但我不知道,我不能使用 js() 插入任何动态数据,因为 js() 只接受常量字符串参数(或者有没有办法做到这一点?)
javascript - How to set a static property on a class in Kotlin for Javascript
I have a situation where I need to define a static property on a class in Kotlin and when its compiled to Javascript have it become a true static field on that class. In this situation companion objects do not work.
For example, if I have an abstract class and its implementing class like below:
The Javascript that this compiles down to is this:
But what I need it to compile down to is this:
So that the id
field does actually statically exist on MyClass
without having to make a new instance of MyClass
.
I've tried using a companion object but that creates a separate object/function called MyClass$Companion
and then assigns the id
field to that and never actually assigns it statically to MyClass
.
How can I go about setting true static fields like this in Kotlin?
javascript - 如何在 Kotlin 中创建一个库并从针对 javascript 或 java 的项目中使用它?
我正在研究如何创建一个供前端和后端代码库使用的通用库。我希望能够创建一个纯粹用 Kotlin 编写的库,对其进行编译,并将所述工件注册为从 js(使用 npm)和 kotlin-java(使用 maven)导入的依赖项。这是一个受支持或可能的工作流程吗?如果是这样,这样做的方法是什么?