【问题标题】:KotlinJS: When would I use Kotlin dynamic typeKotlinJS:我什么时候使用 Kotlin 动态类型
【发布时间】:2017-11-24 07:22:48
【问题描述】:

这与KotlinJS(将 Kotlin 转换为 JavaScript)有关:

Kotlin 有一个 dynamic 类型,如下所示:

val dyn: dynamic ="String"
dyn.thisMethodDoesNotExist(1,2,3)

不会运行类型检查,代码只会“按原样”放入生成的 JS 文件中。

“动态最奇特的特性是我们可以在动态变量上调用任何带有任何参数的属性或函数”

虽然这个概念对我来说很有意义,但我一直想知道在什么情况下我们需要这个功能。有没有人有具体的例子或用例?

Kotlin 允许我们编写 type-safe JavaScript,这是使用转译的原因之一,对吧?那我们为什么要放弃这个并使用动力学呢?

【问题讨论】:

  • 想法:你可以有 2 个类,它们都有一个具有相同签名但来源不同的方法。您可以这样调用它而无需进行任何类型转换。

标签: javascript kotlin


【解决方案1】:

documentation 中有一个 dynamic 类型的示例用例:

如果你想使用例如一个 JQuery plugin(例如 table thingy),它不提供相应的 header files,您必须动态调用它,因为没有可用的库的 Kotlin 等效项用于静态分析。

这样,我们可以在我们的动态类型上调用dataTable(),尽管该函数在编译时是未知的。

此外,有时可能会针对编译安全接口进行编程,但这很难实现。如果你可以放弃类型安全来获得简洁作为回报,那么使用dynamic 可能是可以接受的。以下帖子中描述了这样一个示例:https://medium.com/@Cypressious/your-second-firefox-extension-in-kotlin-bafd91d87c41

“使用外部声明 - 静态方式” 对比 “使用外部声明 - 动态方式”

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-05
    • 1970-01-01
    • 2016-04-01
    • 2018-05-05
    • 2011-01-12
    相关资源
    最近更新 更多