s and attributes
- Structural typing (model JavaScript Objects)
- Polymorphic variants (model Event handler)
- Label and optional arguments (model JSON configuration)


```ocaml
external exp : float -> float = "Math.exp" [@@bs.val]
let v = exp 3.
```

```js
var v = Math.exp(3.)
```

---

## FFI examples

Typescript binding:

```ocaml
type readline
type line_callback = string -> unit [@bs]
(*  [bs] annotation to mark it as uncurried callback  *)
type close_callback = unit -> unit [@bs]
external on : readline