Closed
Description
I want to be able to use literal enum members to discriminate classes
https://www.typescriptlang.org/docs/handbook/enums.html#union-enums-and-enum-member-types
@Serializable
sealed class Project {
abstract val name: String
}
@Serializable
class OwnedProject(override val name: String, val owner: String) : Project()
@Serializable
class DeprecatedProject(override val name: String, val reason: String) : Project()
fun main() {
val tsGenerator = KxsTsGenerator()
println(tsGenerator.generate(OwnedProject.serializer().descriptor))
}
should generate something like
enum ProjectKind {
OwnedProject,
DeprecatedProject,
}
interface Project {
type: ProjectKind;
}
interface OwnedProject {
type: ProjectKind.OwnedProject;
name: string;
owner: string;
}
interface DeprecatedProject {
type: ProjectKind.DeprecatedProject;
name: string;
reason: string;
}
Metadata
Metadata
Assignees
Labels
No labels