文档
概念
枚举

枚举

⚠️

JavaScript 中没有 enum,并且 Rust 中的 enum 与 TypeScript 中的 enum 有很大的不同。 在 JavaScript 中使用 Rust enum 之前,你需要仔细阅读本节内容。

NAPI-RS 中,Rust enum 被转换为普通的 JavaScript 对象。

lib.rs
#[napi]
enum Kind {
  Duck,
  Dog,
  Cat,
}

⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️

index.d.ts
export const enum Kind {
  Duck,
  Dog,
  Cat,
}

TypeScript 中,数字 enums 成员还会获得从枚举值到枚举名称的反向映射。 但在 Rust 中,我们没有这种反向映射行为,它只是一个普通的 JavaScript 对象。

字符串枚举

lib.rs
#[napi(string_enum)]
enum Kind {
  Duck,
  Dog,
  Cat,
}

⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️

index.d.ts
export const enum Kind {
  Duck = 'Duck',
  Dog = 'Dog',
  Cat = 'Cat',
}

NAPI-RS 不支持将 Rust enumimpl 生成到 JavaScript 中。