2 个版本
0.1.1 | 2022 年 10 月 16 日 |
---|---|
0.1.0 | 2022 年 10 月 16 日 |
#30 在 #meant
18KB
295 行
关于
这个包旨在作为 Rust 到 TypeScript 类型转换工具的教学工具。
它支持非常基本的类型,如原始类型、结构体和枚举。它不适用于生产使用。
对于不支持的类型,它将输出警告消息并简单地忽略它们。
如何使用
cargo install typester
typester --input=path/to/rustfile.rs --output=path/to/tsfile.ts
更多信息请使用
typester --help
示例输入
type NumberAlias = i32;
#[serde(tag = "t", content = "c")]
enum Colour {
Red(i32),
Green(i32),
Blue(i32),
}
struct Person {
name: String,
age: u32,
enjoys_coffee: bool,
}
struct ComplexType {
colour_map: HashMap<String, Colour>,
list_of_names: Vec<String>,
optional_person: Option<Person>,
}
示例输出
type HashSet<T extends number | string> = Record<T, undefined>;
type HashMap<T extends number | string, U> = Record<T, U>;
type Vec<T> = Array<T>;
type Option<T> = T | undefined;
type Result<T, U> = T | U;
export type NumberAlias = number;
export type Colour =
| { t: "Red"; c: number }
| { t: "Green"; c: number }
| { t: "Blue"; c: number };
export interface Person {
name: string;
age: number;
enjoys_coffee: boolean;
}
export interface ComplexType {
colour_map: HashMap<string, Colour>;
list_of_names: Vec<string>;
optional_person: Option<Person>;
}
依赖项
~2.5MB
~50K SLoC