You are viewing docs for an older version of Rescript.
Go to latest version.
Null
Functions for handling values that could be null.
If you also need to cover undefined, check out Nullable instead.
t
type t<'a> = Js.Null.t<'a> = Value('a) | NullA type representing a value that can be either 'a or null.
asNullable
let asNullable: t<'a> => Core__Nullable.t<'a>Converts a Null.t into a Nullable.t.
Examples
RESCRIPTlet nullValue = Null.make("Hello")
let asNullable = nullValue->Null.asNullable // Nullable.t<string>
null
let null: t<'a>make
let make: 'a => t<'a>Creates a new Null.t from the provided value.
This means the compiler will enforce null checks for the new value.
Examples
RESCRIPTlet myStr = "Hello"
let asNullValue = myStr->Null.make // The compiler now thinks this can be `string` or `null`.
equal
let equal: (t<'a>, t<'b>, ('a, 'b) => bool) => boolcompare
let compare: (
t<'a>,
t<'b>,
('a, 'b) => Core__Ordering.t,
) => Core__Ordering.ttoOption
let toOption: t<'a> => option<'a>Converts a nullable value into an option, so it can be pattern matched on.
Will convert null to None, and a present value to Some(value).
Examples
RESCRIPTlet nullStr = Null.make("Hello")
switch nullStr->Null.toOption {
| Some(str) => Console.log2("Got string:", str)
| None => Console.log("Didn't have a value.")
}
fromOption
let fromOption: option<'a> => t<'a>Turns an option into a Null.t. None will be converted to null.
Examples
RESCRIPTlet optString: option<string> = None
let asNull = optString->Null.fromOption // Null.t<string>
Console.log(asNull == Null.null) // Logs `true` to the console.
getOr
let getOr: (t<'a>, 'a) => 'agetOr(value, default) returns value if not null, otherwise return
default.
Examples
RESCRIPTNull.getOr(Null.null, "Banana") // Banana
Null.getOr(Null.make("Apple"), "Banana") // Apple
let greet = (firstName: option<string>) =>
"Greetings " ++ firstName->Option.getOr("Anonymous")
Null.make("Jane")->Null.toOption->greet // "Greetings Jane"
Null.null->Null.toOption->greet // "Greetings Anonymous"
getWithDefault
Deprecated
Use getOr instead
let getWithDefault: (t<'a>, 'a) => 'agetExn
let getExn: t<'a> => 'agetExn(value) raises an exception if null, otherwise returns the value.
RESCRIPTNull.getExn(Null.make(3)) // 3
Null.getExn(Null.null) /* Raises an Error */
Exceptions
Raises
Invalid_argumentifvalueisnull,
getUnsafe
let getUnsafe: t<'a> => 'agetUnsafe(value) returns value.
Examples
RESCRIPTNull.getUnsafe(Null.make(3)) == 3
Null.getUnsafe(Null.null) // Raises an error
Important
This is an unsafe operation, it assumes
valueis notnull.
forEach
let forEach: (t<'a>, 'a => unit) => unitforEach(value, f) call f on value. if value is not null, then if calls
f, otherwise returns unit.
Examples
RESCRIPTNull.forEach(Null.make("thing"), x => Console.log(x)) // logs "thing"
Null.forEach(Null.null, x => Console.log(x)) // logs nothing
map
let map: (t<'a>, 'a => 'b) => t<'b>map(value, f) returns f(value) if value is not null, otherwise returns
value unchanged.
Examples
RESCRIPTNull.map(Null.make(3), x => x * x) // Null.make(9)
Null.map(Null.null, x => x * x) // null
mapOr
let mapOr: (t<'a>, 'b, 'a => 'b) => 'bmapOr(value, default, f) returns f(value) if value is not null,
otherwise returns default.
Examples
RESCRIPTlet someValue = Null.make(3)
someValue->Null.mapOr(0, x => x + 5) // 8
let noneValue = Null.null
noneValue->Null.mapOr(0, x => x + 5) // 0
mapWithDefault
Deprecated
Use mapOr instead
let mapWithDefault: (t<'a>, 'b, 'a => 'b) => 'bflatMap
let flatMap: (t<'a>, 'a => t<'b>) => t<'b>flatMap(value, f) returns f(value) if value is not null, otherwise
returns value unchanged.
Examples
RESCRIPTlet addIfAboveOne = value =>
if (value > 1) {
Null.make(value + 1)
} else {
Null.null
}
Null.flatMap(Null.make(2), addIfAboveOne) // Null.make(3)
Null.flatMap(Null.make(-4), addIfAboveOne) // null
Null.flatMap(Null.null, addIfAboveOne) // null