features
- generate interface declarations from rust structs
- generate union declarations from rust enums
- inline types
- flatten structs/interfaces
- generate necessary imports when exporting to multiple files
- serde compatibility
- generic types
- support for ESM imports
limitations
- generic fields cannot be inlined or flattened (#56)
- type aliases must not alias generic types (#70)
cargo features
-
serde-compat
(default)Enable serde compatibility. See below for more info.
-
format
When enabled, the generated typescript will be formatted. Currently, this sadly adds quite a bit of dependencies.
-
chrono-impl
Implement
TS
for types from chrono -
bigdecimal-impl
Implement
TS
for types from bigdecimal -
url-impl
Implement
TS
for types from url -
uuid-impl
Implement
TS
for types from uuid -
bson-uuid-impl
Implement
TS
for types from bson -
bytes-impl
Implement
TS
for types from bytes -
indexmap-impl
Implement
TS
forIndexMap
andIndexSet
from indexmap -
ordered-float-impl
Implement
TS
forOrderedFloat
from ordered_float -
heapless-impl
Implement
TS
forVec
from heapless -
no-serde-warnings
When
serde-compat
is enabled, warnings are printed during build if unsupported serde attributes are encountered. Enabling this feature silences these warnings. -
import-esm
import
statements in the generated file will have the.js
extension in the end of the path to conform to the ES Modules spec. (e.g.:import { MyStruct } from "./my_struct.js"
)
If there's a type you're dealing with which doesn't implement TS
, use #[ts(type = "..")]
or open a PR.