【发布时间】:2023-02-24 10:51:14
【问题描述】:
我在打字稿中有这个界面,看起来像这样:
interface Test {
'some-key' : boolean
}
有人知道如何将其转换为科特林吗?当我尝试在科特林中使用它时,像这样:
interface Test {
val 'some-key' : boolean
}
它说:“期望属性名称或接收者类型”
【问题讨论】:
标签: kotlin
我在打字稿中有这个界面,看起来像这样:
interface Test {
'some-key' : boolean
}
有人知道如何将其转换为科特林吗?当我尝试在科特林中使用它时,像这样:
interface Test {
val 'some-key' : boolean
}
它说:“期望属性名称或接收者类型”
【问题讨论】:
标签: kotlin
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 - 你只需要用反引号将它包围起来。