Module Js

This library provides bindings and necessary support for JS FFI. It contains all bindings into Js namespace.

[| 1;2;3;4|]
|. Js.Array2.map (fun x -> x + 1 )
|. Js.Array2.reduce (+) 0
|. Js.log

Types for JS objects

type t('a) = 'a;

This used to be mark a Js object type. It is not needed any more, it is kept here for compatibility reasons

module Fn: { ... };
type null(+'a);

nullable, value of this type can be either null or 'a this type is the same as type t in Null

type undefined(+'a);

value of this type can be either undefined or 'a this type is the same as type t in Undefined

type nullable(+'a);

value of this type can be undefined, null or 'a this type is the same as type t n Null_undefined

type null_undefined(+'a) = nullable('a);
let toOption: nullable('a) => option('a);
let undefinedToOption: undefined('a) => option('a);
let nullToOption: null('a) => option('a);
let isNullable: nullable('a) => bool;
let testAny: 'a => bool;

The same as test except that it is more permissive on the types of input

type promise(+'a, +'e);

The promise type, defined here for interoperation across packages

let null: null('a);

The same as empty in Js.Null will be compiled as null

let undefined: undefined('a);

The same as empty Js.Undefined will be compiled as undefined

let typeof: 'a => string;

typeof x will be compiled as typeof x in JS Please consider functions in Types for a type safe way of reflection

let log: 'a => unit;

A convenience function to log everything

let log2: 'a => 'b => unit;
let log3: 'a => 'b => 'c => unit;
let log4: 'a => 'b => 'c => 'd => unit;
let logMany: array('a) => unit;

A convenience function to log more than 4 arguments

let eqNull: 'a => null('a) => bool;
let eqUndefined: 'a => undefined('a) => bool;
let eqNullable: 'a => nullable('a) => bool;
operators
let unsafe_lt: 'a => 'a => bool;

unsafe_lt a b will be compiled as a < b. It is marked as unsafe, since it is impossible to give a proper semantics for comparision which applies to any type

let unsafe_le: 'a => 'a => bool;

unsafe_le a b will be compiled as a <= b. See also unsafe_lt

let unsafe_gt: 'a => 'a => bool;

unsafe_gt a b will be compiled as a > b. See also unsafe_lt

let unsafe_ge: 'a => 'a => bool;

unsafe_ge a b will be compiled as a >= b. See also unsafe_lt

nested modules
module Null = Js_null;

Provide utilities around 'a null

module Undefined = Js_undefined;

Provide utilities around undefined

module Nullable = Js_null_undefined;

Provide utilities around null_undefined

module Null_undefined = Js_null_undefined;
module Exn = Js_exn;

Provide utilities for dealing with Js exceptions

module Array = Js_array;

Provide bindings to Js array

module Array2 = Js_array2;

Provide bindings to Js array

module String = Js_string;

Provide bindings to JS string

module String2 = Js_string2;

Provide bindings to JS string

module Re = Js_re;

Provide bindings to Js regex expression

module Promise = Js_promise;

Provide bindings to JS promise

module Date = Js_date;

Provide bindings for JS Date

module Dict = Js_dict;

Provide utilities for JS dictionary object

module Global = Js_global;

Provide bindings to JS global functions in global namespace

module Json = Js_json;

Provide utilities for json

module Math = Js_math;

Provide bindings for JS Math object

module Obj = Js_obj;

Provide utilities for Js.t

module Typed_array = Js_typed_array;

Provide bindings for JS typed array

module TypedArray2 = Js_typed_array2;

Provide bindings for JS typed array

module Types = Js_types;

Provide utilities for manipulating JS types

module Float = Js_float;

Provide utilities for JS float

module Int = Js_int;

Provide utilities for int

module Bigint = Js_bigint;

Provide utilities for bigint

module Option = Js_option;

Provide utilities for option

module Result = Js_result;

Define the interface for result

module List = Js_list;

Provide utilities for list

module Vector = Js_vector;
module Console = Js_console;
module Set = Js_set;

Provides bindings for ES6 Set

module WeakSet = Js_weakset;

Provides bindings for ES6 WeakSet

module Map = Js_map;

Provides bindings for ES6 Map

module WeakMap = Js_weakmap;

Provides bindings for ES6 WeakMap