LogoAnchor 中文文档

Rust 到 JS 类型转换

Anchor 在 Rust 和 TypeScript 类型之间如何转换的参考

本参考展示了如何在 Rust 和 TypeScript 类型之间进行转换。

基本类型

布尔值

RustTypeScript示例
boolbooleantrue

数字

RustTypeScript示例
u8/u16/u32/i8/i16/i32number99
u64/u128/i64/i128anchor.BNnew anchor.BN(99)
f32/f64number1.0

字符串

RustTypeScript示例
Stringstring"hello"

集合

数组和向量

RustTypeScript示例
[T; N] (固定数组)Array<T>[1, 2, 3]
Vec<T> (向量)Array<T>[1, 2, 3]

可选值

RustTypeScript示例
Option<T>T | null | undefinednull (None)
42 (Some)

复杂类型

结构体

Rust
// Rust
struct MyStruct {
    val: u16,
}
TypeScript
// TypeScript
type MyStruct = {
  val: number;
};
 
// 示例
const instance = { val: 99 };

枚举

Rust
// Rust
enum MyEnum {
    One,
    Two { val: u32 },
    Three(u8, i16),
}
TypeScript
// TypeScript 表示
// 单元变体
const one = { one: {} };
 
// 命名变体
const two = {
  two: { val: 99 },
};
 
// 元组变体
const three = {
  three: [12, -34],
};

注意事项

  • Rust 整数 (u8i32) 映射到 JavaScript 的 number
  • 更大的整数 (u64 及以上) 使用 Anchor 的 BN 类型以保证精度
  • Rust 的 Option<T> 映射到 TypeScript 的联合类型,包含 null/undefined
  • 结构体和枚举成为 JavaScript 对象

On this page

在GitHub上编辑