unchecked_return_typeunchecked_param_type

可以使用 #[wasm_bindgen(unchecked_return_type)]#[wasm_bindgen(unchecked_param_type)] 重写导出的函数和方法的返回类型和参数类型。

注意: 使用 #[wasm_bindgen(unchecked_return_type)]#[wasm_bindgen(unchecked_param_type)] 提供的类型不会检查其内容。它们将以完全指定的形式出现在函数签名和 JSDoc 中。例如,在返回 String 的函数上使用 #[wasm_bindgen(unchecked_return_type = "number")] 将返回一个 string,而不是 number,即使 TS 签名和 JSDoc 会另行说明。


# #![allow(unused_variables)]
#fn main() {
#[wasm_bindgen(unchecked_return_type = "Foo")]
pub fn foo(
    #[wasm_bindgen(unchecked_param_type = "Bar")]
    arg1: JsValue,
) -> JsValue {
    // function body
}

#[wasm_bindgen]
pub struct Foo {
    // properties
}

#[wasm_bindgen]
impl Foo {
    #[wasm_bindgen(unchecked_return_type = "Baz")]
    pub fn foo(
        &self,
        #[wasm_bindgen(unchecked_param_type = "Bar")]
        arg1: JsValue,
    ) -> JsValue {
        // function body
    }
}
#}

这将生成以下 JS 绑定

/**
 * @param {Bar} arg1
 * @returns {Foo}
 */
export function foo(arg1) {
    // ...
}

export class Foo {
    /**
     * @param {Bar} arg1
     * @returns {Baz}
     */
    foo(arg1) {
        // ...
    }
}