只读

当附加到 pub 结构体的字段时,这表示它从 JavaScript 中是只读的,并且不会生成 setter 并导出到 JavaScript。

#![allow(unused)]
fn main() {
#[wasm_bindgen]
pub fn make_foo() -> Foo {
    Foo {
        first: 10,
        second: 20,
    }
}

#[wasm_bindgen]
pub struct Foo {
    pub first: u32,

    #[wasm_bindgen(readonly)]
    pub second: u32,
}
}

这里 first 字段在 JS 中既可读又可写,但 second 字段在 JS 中将是 readonly 字段,其中 setter 没有实现,尝试设置它将抛出异常。

import { make_foo } from "./my_module";

const foo = make_foo();

// Can both get and set `first`.
foo.first = 99;
console.log(foo.first);

// Can only get `second`.
console.log(foo.second);