Module Js.Nullable

Utility functions on nullable

Contains functionality for dealing with values that can be both null and undefined

type t(+'a) = Js.nullable('a);

Local alias for 'a Js.nullable

let return: 'a => t('a);

Constructs a value of 'a Js.nullable containing a value of 'a

let isNullable: t('a) => bool;

Returns true if the given value is null or undefined, false otherwise

let null: t('a);

The null value of type 'a Js.nullable

let undefined: t('a);

The undefined value of type 'a Js.nullable

let map: f:Js.Fn.arity1(('a => 'b)) => t('a) => t('b);
let bind: f:Js.Fn.arity1(('a => t('b))) => t('a) => t('b);

Binds the contained value using the given function

If 'a Js.nullable contains a value, that value is unwrapped, mapped to a 'b using the given function a' -> 'b, then wrapped back up and returned as 'b Js.nullable

let maybeGreetWorld (maybeGreeting: string Js.nullable) =
  Js.Nullable.bind maybeGreeting ~f:(fun greeting -> greeting ^ " world!")
let iter: f:Js.Fn.arity1(('a => unit)) => t('a) => unit;

Iterates over the contained value with the given function

If 'a Js.nullable contains a value, that value is unwrapped and applied to the given function.

let maybeSay (maybeMessage: string Js.nullable) =
  Js.Nullable.iter maybeMessage ~f:(fun message -> Js.log message)
let fromOption: option('a) => t('a);

Maps 'a option to 'a Js.nullable

Some a -> return a
None -> undefined
let toOption: t('a) => option('a);

Maps 'a Js.nullable to 'a option

return a -> Some a
undefined -> None
null -> None