add: docs for typescript_type

This commit is contained in:
clearloop 2020-03-04 15:32:40 +08:00
parent 84f5fe2c00
commit 003dc45d76
3 changed files with 60 additions and 2 deletions

View File

@ -26,12 +26,13 @@ pub struct TextStyle {
#[wasm_bindgen] #[wasm_bindgen]
impl TextStyle { impl TextStyle {
#[wasm_bindgen(constructor)] #[wasm_bindgen(constructor)]
pub fn new(_i: ITextStyle) { pub fn new(_i: ITextStyle) -> TextStyle {
// parse JsValue // parse JsValue
TextStyle::default()
} }
pub fn optional_new(_i: Option<ITextStyle>) -> TextStyle { pub fn optional_new(_i: Option<ITextStyle>) -> TextStyle {
// parse JsValueo // parse JsValue
TextStyle::default() TextStyle::default()
} }
} }

View File

@ -82,6 +82,7 @@
- [`getter` and `setter`](./reference/attributes/on-rust-exports/getter-and-setter.md) - [`getter` and `setter`](./reference/attributes/on-rust-exports/getter-and-setter.md)
- [`inspectable`](./reference/attributes/on-rust-exports/inspectable.md) - [`inspectable`](./reference/attributes/on-rust-exports/inspectable.md)
- [`skip_typescript`](./reference/attributes/on-rust-exports/skip_typescript.md) - [`skip_typescript`](./reference/attributes/on-rust-exports/skip_typescript.md)
- [`typescript_type`](./reference/attributes/on-rust-exports/typescript_type.md)
- [`web-sys`](./web-sys/index.md) - [`web-sys`](./web-sys/index.md)
- [Using `web-sys`](./web-sys/using-web-sys.md) - [Using `web-sys`](./web-sys/using-web-sys.md)

View File

@ -0,0 +1,56 @@
# typescript_type
The `typescript_type` allows us to use typescript declarations in `typescript_custom_section` as arguments for rust functions! For example:
```rust
#[wasm_bindgen(typescript_custom_section)]
const ITEXT_STYLE: &'static str = r#"
interface ITextStyle {
bold: boolean;
italic: boolean;
size: number;
}
"#;
#[wasm_bindgen]
extern "C" {
#[wasm_bindgen(typescript_type = "ITextStyle")]
pub type ITextStyle;
}
#[wasm_bindgen]
#[derive(Default)]
pub struct TextStyle {
pub bold: bool,
pub italic: bool,
pub size: i32,
}
#[wasm_bindgen]
impl TextStyle {
#[wasm_bindgen(constructor)]
pub fn new(_i: ITextStyle) -> TextStyle {
// parse JsValue
TextStyle::default()
}
pub fn optional_new(_i: Option<ITextStyle>) -> TextStyle {
// parse JsValueo
TextStyle::default()
}
}
```
We can write our `typescript` code like:
```ts
import { ITextStyle, TextStyle } from "./my_awesome_module";
const style: TextStyle = new TextStyle({
bold: true,
italic: true,
size: 42,
});
const optional_style: TextStyle = TextStyle.optional_new();
```