#typescript #convert #meant #type #production #tool #enums

app typester

将 Rust 类型转换为 TypeScript 类型。这个包旨在作为教学工具,而不是用于生产。

2 个版本

0.1.1 2022 年 10 月 16 日
0.1.0 2022 年 10 月 16 日

#30#meant

MIT 许可证

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