【发布时间】:2021-06-16 19:42:45
【问题描述】:
我在 Kotlin 中有两个非常相似的数据类。唯一的区别是一个有 ID 字段,另一个没有(如果模型仅存储在数据库中,则会生成 ID)。
data class RouteWithId(
val id: String,
val name: String,
val description: String,
val comments: List<Comment>,
val media: List<Media>,
val points: List<RoutePoint>,
val userId: String,
val status: RouteState,
val tracks: List<TrackInfo>,
) {
enum class RouteState(val value: String){
IN_REVIEW("in-review"),
PUBLISHED("published");
}
}
data class Route(
val name: String,
val description: String,
val comments: List<Comment>,
val media: List<Media>,
val points: List<RoutePoint>,
val userId: String,
val status: RouteState,
val tracks: List<TrackInfo>,
) {
enum class RouteState(val value: String){
IN_REVIEW("in-review"),
PUBLISHED("published");
}
}
我试图用一个可以为空的 id 字段来统一它们,但很多时候,它只会产生很多噪音,因为我知道在几个地方,ID 会存在(从数据库加载后的任何后处理)。
我看到 TypeScript 有一个名为 Omit 的 utility type,它可用于从另一种类型派生一个类型,但省略某些字段。
这对我的用例来说是完美的,因为我知道从数据库加载后该字段将存在,而在此之前我也知道它不会存在。
你知道如何在 Kotlin 中实现同样的目标吗?
【问题讨论】:
-
为什么不简单地将 ID 设置为 -1 ?
标签: typescript kotlin data-class