【问题标题】:Generate numeric enums with ts-rs使用 ts-rs 生成数字枚举
【发布时间】:2023-02-07 16:23:47
【问题描述】:

使用 ts-rs 时,是否可以从我的 Rust 枚举在打字稿中生成 numeric enums

#[derive(Serialize, Deserialize, TS, Debug)]
#[serde(rename_all = "camelCase")]
#[ts(export, export_to = "../src/types/interfaces/")]
pub enum MyEnum {
  Display = 0,
  Extents = 1,
  Limits = 2,
  View = 3,
}

成为

export type MyEnum = "display" | "extents" | "limits" | "view";

我希望它变成类似的东西

export const enum MyEnum = {
  Display = 0,
  Extents = 1,
  Limits = 2,
  View = 3,
}

这可能吗?

【问题讨论】:

标签: typescript rust serde


【解决方案1】:

要使用 ts-rs 库在 Rust 中生成数字枚举,您需要首先将其作为依赖项添加到您的 Rust 项目中。以下是您的操作方法:

将以下行添加到您的 Cargo.toml 文件中:

ts-rs = "0.3"

使用 extern crate 将库导入到你的 Rust 代码中:

extern crate ts_rs;

使用 TsEnum 宏来定义您的数字枚举:

#[derive(TsEnum)]
enum MyEnum {
    Value1 = 1,
    Value2 = 2,
    Value3 = 3,
}

在上面的示例中,TsEnum 是一个过程宏,它为 Rust 枚举生成 TypeScript 类型定义。

现在,您可以在 Rust 代码中使用 MyEnum,并在 TypeScript 代码中使用它的等效 TypeScript 类型。枚举的值会自动转换为 TypeScript 中的正确数值。

关于ts-rs库的更多信息和使用方法,可以参考它的文档:https://docs.rs/ts-rs/0.3.0/ts_rs/

【讨论】:

  • 这是一个关于 ts-rs 的 Rust 问题。
  • 哦,抱歉,我以为你问的是打字稿。我已经更改了对 Rust 的回答
  • ts-rs 现在是版本 6。自 0.3 以来他们是否更改了枚举行为?
猜你喜欢
  • 2017-06-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-28
  • 1970-01-01
  • 2021-06-02
  • 2015-09-02
相关资源
最近更新 更多