Peter
04/16/2020, 7:07 PMinline class TypesafeId<T>(val id: Int)
typealias PersonId = TypesafeId<Person>
data class Person(val id: PersonId)
typealias AnimalId = TypesafeId<Animal>
data class Animal(val id: AnimalId)
fun main(args: Array<String>) {
println(Animal(AnimalId(1)))
// println(Person(AnimalId(1))) typecheck fails at compile time
println(Person(TypesafeId(1)))
}
wondering why the last println
compiles successfully?Zach Klippenstein (he/him) [MOD]
04/16/2020, 7:13 PMT
of TypesafeId
to be Person
.Peter
04/16/2020, 7:14 PMDavid Eriksson
04/17/2020, 8:00 AM