1 个不稳定版本
0.1.0 | 2022年11月6日 |
---|
#96 在 #synchronization
每月 401 次下载
在 2 个crate中(通过 tsync)使用
5KB
tsync
一个从Rust代码生成TypeScript类型的实用工具。
安装
它包含两部分
-
命令行工具
cargo install tsync
-
Rust项目的依赖项(使用
#[tsync]
属性;详见下文使用说明)/// Cargo.toml tsync = "X.Y.Z"
使用方法
以下示例展示了如何标记结构体使用 #[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;
然后使用命令行工具
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> | undefined
}
interface Chapter {
title: string
pages: number
}
// Time in UTC seconds
type UTC = number
多个输入
您可以使用 -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。