Namespaces
Namespace rendering is disabled by default, so generated declarations remain top-level:
@Serializable
class Widget(val value: String)
fun main() {
println(KotlinTsGenerator().generate(Widget.serializer()))
}
Full example: disabled namespaces.
export interface Widget {
value: string;
}
References between descriptor namespaces are qualified so they remain valid after declarations are nested:
@Serializable
@SerialName("org.one.Parent")
class Parent(val child: Child)
@Serializable
@SerialName("org.two.Child")
class Child(val value: String)
fun main() {
val config = KotlinTsConfig(
namespaceConfig = KotlinTsConfig.NamespaceConfig.DescriptorNamePrefix,
)
println(KotlinTsGenerator(config).generate(Parent.serializer()))
}
Full example: cross-namespace references.
export namespace org {
export namespace one {
export interface Parent {
child: org.two.Child;
}
}
export namespace two {
export interface Child {
value: string;
}
}
}
Use NamespaceConfig.Static to place every generated declaration in one
namespace:
@Serializable
class Widget(val value: String)
fun main() {
val config = KotlinTsConfig(
namespaceConfig = KotlinTsConfig.NamespaceConfig.Static("models"),
)
println(KotlinTsGenerator(config).generate(Widget.serializer()))
}
Full example: static namespace.
export namespace models {
export interface Widget {
value: string;
}
}
DescriptorNamePrefix converts dotted serial-name prefixes into nested
namespaces:
@Serializable
@SerialName("org.example.Widget")
class Widget(val value: String)
fun main() {
val config = KotlinTsConfig(
namespaceConfig = KotlinTsConfig.NamespaceConfig.DescriptorNamePrefix,
)
println(KotlinTsGenerator(config).generate(Widget.serializer()))
}
Full example: descriptor-prefix namespaces.
export namespace org {
export namespace example {
export interface Widget {
value: string;
}
}
}