@@ -21,23 +21,30 @@ interface PlayerDetails {
21
21
}
22
22
```
23
23
24
- The aim is to create TypeScript interfaces that can accurately produce JSON that Kotlinx
25
- Serialization can parse.
24
+ The aim is to create TypeScript interfaces that can accurately produce Kotlinx Serialization
25
+ compatible JSON.
26
+
27
+ The Kotlinx Serialization API should be used to generate TypeScript. The
28
+ [ ` SerialDescriptor ` s] ( https://kotlin.github.io/kotlinx.serialization/kotlinx-serialization-core/kotlinx.serialization.descriptors/-serial-descriptor/index.html )
29
+ are flexible and comprehensive enough to allow for accurate TypeScript code, without any deviation.
26
30
27
31
See [ the docs] ( ./docs ) for working examples.
28
32
29
33
## Status
30
34
31
35
This is a proof-of-concept.
32
36
33
- | | Status | Notes |
34
- | ---------------------------------------| ----------------------------------------------------------| :--------------------------------------------------------------------------------------------------|
35
- | Basic classes | ✅ [ example] ( ./docs/basic-classes.md ) | |
36
- | Nullable and default-value properties | ✅ [ example] ( ./docs/default-values.md ) | |
37
- | Value classes | ✅ [ example] ( ./docs/value-classes.md ) | |
38
- | Enums | ✅ [ example] ( ./docs/enums.md ) | |
39
- | Lists | ✅ [ example] ( ./docs/lists.md ) | |
40
- | Maps | ✅/⚠ [ example] ( ./docs/maps.md ) | Maps with complex keys are converted to an ES6 Map. [ See] ( ./docs/maps.md#maps-with-complex-keys ) |
41
- | Polymorphism - Sealed classes | ✅/⚠ [ example] ( ./docs/polymorphism.md#sealed-classes ) | Nested sealed classes are ignored |
42
- | Polymorphism - Open classes | ❌ [ example] ( ./docs/abstract-classes.md ) | Not implemented. Converted to ` type MyClass = any ` |
43
- | Edge cases - circular dependencies | ✅ [ example] ( ./docs/edgecases.md ) | |
37
+ | | Status | Notes |
38
+ | ---------------------------------------| ----------------------------------------------------------| :-------------------------------------------------------------------------------------------------|
39
+ | Kotlin multiplatform | ❓ | The codebase is multiplatform, but only JVM has been tested |
40
+ | ` @SerialName ` | ✅/⚠ | The serial name is directly converted and might produce invalid TypeScript |
41
+ | Basic classes | ✅ [ example] ( ./docs/basic-classes.md ) | |
42
+ | Nullable and default-value properties | ✅ [ example] ( ./docs/default-values.md ) | |
43
+ | Value classes | ✅ [ example] ( ./docs/value-classes.md ) | |
44
+ | Enums | ✅ [ example] ( ./docs/enums.md ) | |
45
+ | Lists | ✅ [ example] ( ./docs/lists.md ) | |
46
+ | Maps | ✅/⚠ [ example] ( ./docs/maps.md ) | Maps with complex keys are converted to an ES6 Map, [ see] ( ./docs/maps.md#maps-with-complex-keys ) |
47
+ | Polymorphism - Sealed classes | ✅/⚠ [ example] ( ./docs/polymorphism.md#sealed-classes ) | Nested sealed classes are ignored, [ see] ( ./docs/polymorphism.md#nested-sealed-classes ) |
48
+ | Polymorphism - Open classes | ❌ [ example] ( ./docs/abstract-classes.md ) | Not implemented. Converted to ` type MyClass = any ` |
49
+ | ` @JsonClassDiscriminator ` | ❌ | Not implemented |
50
+ | Edge cases - circular dependencies | ✅ [ example] ( ./docs/edgecases.md ) | |
0 commit comments