[−][src]Trait ts_rs::TS
A type which can be represented in TypeScript.
Most of the time, you'd want to derive this trait instead of implementing it manually.
ts-rs comes with implementations for all numeric types, String
, Vec
, Option
and tuples.
get started
TS can easily be derived for structs and enums:
use ts_rs::TS; #[derive(TS)] struct User { first_name: String, last_name: String, }
To actually obtain the bindings, you can call User::dump
to write the bindings to a file:
std::fs::remove_file("bindings.ts").ok(); User::dump("bindings.ts").unwrap();
struct attributes
-
#[ts(rename = "..")]
:
Set the name of the generated interface -
#[ts(rename_all = "..")]
:
Rename all fields of this struct.
Valid values arelowercase
,UPPERCASE
,camelCase
,snake_case
,PascalCase
,SCREAMING_SNAKE_CASE
struct field attributes
-
#[ts(type = "..")]
:
Overrides the type used in TypeScript -
#[ts(rename = "..")]
:
Renames this field -
#[ts(inline)]
:
Inlines the type of this field -
#[ts(skip)]
:
Skip this field -
#[ts(flatten)]
:
Flatten this field (only works if the field is a struct)
enum attributes
-
#[ts(rename = "..")]
:
Set the name of the generated type -
#[ts(rename_all = "..")]
:
Rename all variants of this enum.
Valid values arelowercase
,UPPERCASE
,camelCase
,snake_case
,PascalCase
,SCREAMING_SNAKE_CASE
enum variant attributes
-
#[ts(rename = "..")]
:
Renames this variant -
#[ts(skip)]
:
Skip this variant
Required methods
pub fn name() -> String
[src]
Name of this type in TypeScript.
pub fn dependencies() -> Vec<(TypeId, String)>
[src]
All type ids and typescript names of the types this type depends on.
This is used for resolving imports when using the export!
macro.
pub fn transparent() -> bool
[src]
true
if this is a transparent type, e.g tuples or a list.
This is used for resolving imports when using the export!
macro.
Provided methods
pub fn decl() -> String
[src]
Declaration of this type, e.g. interface User { user_id: number, ... }
.
This function will panic if the type has no declaration.
pub fn inline(indent: usize) -> String
[src]
Formats this types definition in TypeScript, e.g { user_id: number }
.
This function will panic if the type cannot be inlined.
pub fn inline_flattened(indent: usize) -> String
[src]
Flatten an type declaration.
This function will panic if the type cannot be flattened.
pub fn dump(out: impl AsRef<Path>) -> Result<()>
[src]
Dumps the declaration of this type to a file.
If the file does not exist, it will be created.
If it does, the declaration will be appended.
This function will panicked when called on a type which does not have a declaration.