【问题标题】:How to create this interface in Kotlin?如何在 Kotlin 中创建此接口?
【发布时间】:2023-02-24 10:51:14
【问题描述】:

我在打字稿中有这个界面,看起来像这样:

interface Test {
  'some-key' : boolean
}

有人知道如何将其转换为科特林吗?当我尝试在科特林中使用它时,像这样:

interface Test {
  val 'some-key' : boolean
}

它说:“期望属性名称或接收者类型”

【问题讨论】:

    标签: kotlin


    【解决方案1】:

    some-key 不是有效的 Kotlin 标识符。您需要使用 some_key 或(更惯用的)someKey 在您的界面中定义一个属性。

    interface Test {
      val someKey: Boolean
    }
    

    然后实现者将被期望将 val someKey 属性定义为布尔值。

    请注意,Kotlin 不像 Typescript。 Kotlin 名义上是有类型的。所以接口Test确实不是神奇地封装了所有用一个名为 someKey 的布尔值编写的类。相反,它专门用作选择用于实现 Test接口的类的超级型。

    如果您正在寻找的是“仅包含”布尔值的类型,而不是封装包含布尔值的抽象接口,那么您需要 data class

    data class Test(val someKey: Boolean)
    

    这是一种非抽象的类型,可以实例化。具体包含一个Boolean,调用者可以自由访问。

    如果你真的想在 Kotlin 中使用类似 some-key 的键名,你可以用反引号将它括起来。请注意,您图书馆的用户也必须这样做。

    data class Test(val `some-key`: Boolean)
    

    【讨论】:

    • some-key一个有效的标识符,而不是遵循样式指南的标识符 :D - 你只需要用反引号将它包围起来。
    • @Sweeper 嘿,我不知道 Kotlin 会那样做。谢谢你的提示!
    • 完美,这很有帮助,非常感谢!
    猜你喜欢
    • 1970-01-01
    • 2016-10-06
    • 1970-01-01
    • 2020-05-15
    • 2021-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多