unchecked_return_type
和 unchecked_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) {
// ...
}
}