22 个稳定版本
2.2.1 | 2024 年 6 月 12 日 |
---|---|
2.1.0 | 2024 年 1 月 4 日 |
2.0.1 | 2023 年 9 月 29 日 |
1.7.0 | 2023 年 3 月 30 日 |
1.0.1 | 2020 年 11 月 22 日 |
#148 在 Web 编程 中
每月 200 次下载
在 create-rust-app 中使用
69KB
1.5K SLoC
tsync
从 Rust 代码生成 TypeScript 类型的实用工具。尽量符合 serde 的序列化输出。
安装
该工具包含两个部分
-
CLI 工具(或参见“作为库的使用”)
cargo install tsync
-
Rust 项目的依赖项(使用
#[tsync]
属性;下面是使用方法)cargo add tsync@1
使用方法
使用以下方法标记结构体为 #[tsync]
/// src/main.rs
use tsync::tsync;
/// Doc comments are preserved too!
#[tsync]
struct Book {
name: String,
chapters: Vec<Chapter>,
user_reviews: Option<Vec<String>>
}
#[tsync]
struct Chapter {
title: String,
pages: u32
}
#[tsync]
/// Time in UTC seconds
type UTC = usize;
然后使用 CLI 工具
tsync -i ./src -o types.d.ts
就这样!
/// types.d.ts
/* This file is generated and managed by tsync */
// Doc comments are preserved too!
interface Book {
name: string
chapters: Array<Chapter>
user_reviews?: Array<string>
}
interface Chapter {
title: string
pages: number
}
// Time in UTC seconds
type UTC = number
支持的转换及示例
带有 #[tsync] 的 Rust 代码 |
Typescript 输出 |
---|---|
结构体 |
.d.ts 文件 或 .ts 文件 |
类型 |
.d.ts 文件 或 .ts 文件 |
枚举 |
.d.ts 文件 或 .ts 文件 |
const (或有限的 json! 支持) |
.ts 文件 注意:如果您为输出指定了 .d.ts 扩展名,则 rust const 与 #[tsync] 将被忽略 |
多个输入
您可以使用 -i
标志多次指定多个输入(目录和/或文件),如下所示
tsync -i directory1 -i directory2 -o types.d.ts
多个输出
为您的项目创建多个类型文件可能会有所帮助。这很简单,只需多次调用 tsync 即可
tsync -i src/models -o models.d.ts
tsync -i src/api -o api.d.ts
作为库使用
如果您不打算全局安装 tsync
(或者会导致其他问题),则可以使用它作为库。
-
将库添加到您的项目中
cargo add tsync@1
-
在您的项目中创建一个新的二进制文件,该文件使用 crate(例如,
bin/tsync.rs
)// bin/tsync.rs use std::path::PathBuf; pub fn main() { let dir = env!("CARGO_MANIFEST_DIR"); let inputs = vec![PathBuf::from_iter([dir, "backend"])]; let output = PathBuf::from_iter([dir, "frontend/src/types/rust.d.ts"]); tsync::generate_typescript_defs(inputs, output, false); }
-
在
Cargo.toml
中创建二进制条目[[bin]] name = "tsync" path = "bin/tsync.rs"
-
执行!
cargo run --bin tsync
提示:要使用 cargo tsync
,请在 .cargo/config
中创建别名
[alias]
tsync="run --bin tsync"
错误
在执行 tsync
后,将列出无法成功打开或解析的文件列表。对于其他错误,请尝试使用 --debug
标志来定位问题。请使用 GitHub 问题跟踪器报告任何问题。
文档
有关更多信息,请参阅 tsync --help
请随时提交支持或功能请求的票证。
开发和测试
使用 ./test/test_all.sh
运行测试。在运行测试后,./test
中的文件应没有意外的更改(使用 git status
和 git diff
查看是否有更改)。
许可
此工具根据 MIT 许可证和 Apache 许可证(版本 2.0)的条款进行分发。
有关详细信息,请参阅 LICENSE-APACHE、LICENSE-MIT 和 COPYRIGHT。
依赖项
~2–31MB
~403K SLoC