我在 typescript 中有一个接口,看起来像这样:
interface Test { 'some-key' : boolean }
有人知道怎么把这个转换成Kotlin吗?当我试着在kotlin中使用这个的时候,就像这样:
interface Test { val 'some-key' : boolean }
它说:“需要属性名称或接收器类型”
798qvoo81#
some-key不是有效的Kotlin标识符。您需要使用some_key或(更习惯的用法)someKey来定义接口中的属性。
some_key
someKey
interface Test { val someKey: Boolean }
然后,实现者需要将val someKey属性定义为布尔值。请注意,Kotlin与Typescript不同,Kotlin是名义上类型化的,因此Test接口并没有神奇地封装所有用布尔值someKey编写的类,而是专门充当选择实现Test接口的类的超类型。如果您要寻找的是“仅包含”布尔值的类型,而不是封装了包含布尔值的概念的抽象接口,那么您需要data class。
val someKey
Test
data class
data class Test(val someKey: Boolean)
这是一个非抽象的可以示例化的类型,具体包含一个Boolean,调用方可以自由访问。如果你真的想在Kotlin中使用类似some-key的键值名,你可以用反勾号把它括起来,注意你的库的用户也必须这样做。
Boolean
some-key
data class Test(val `some-key`: Boolean)
1条答案
按热度按时间798qvoo81#
some-key不是有效的Kotlin标识符。您需要使用
some_key
或(更习惯的用法)someKey
来定义接口中的属性。然后,实现者需要将
val someKey
属性定义为布尔值。请注意,Kotlin与Typescript不同,Kotlin是名义上类型化的,因此
Test
接口并没有神奇地封装所有用布尔值someKey
编写的类,而是专门充当选择实现Test
接口的类的超类型。如果您要寻找的是“仅包含”布尔值的类型,而不是封装了包含布尔值的概念的抽象接口,那么您需要
data class
。这是一个非抽象的可以示例化的类型,具体包含一个
Boolean
,调用方可以自由访问。如果你真的想在Kotlin中使用类似
some-key
的键值名,你可以用反勾号把它括起来,注意你的库的用户也必须这样做。