枚举
⚠️
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 enum
的 impl
生成到 JavaScript 中。