///|
#external
pub type Any
///|
pub fn[T] Any::from(obj : T) -> Any = "%identity"
///|
pub fn[T] Any::to(self : Any) -> T = "%identity"
///|
pub extern "js" fn Any::undefined() -> Any =
#|() => undefined
///|
#external
pub type Nullable[T]
///|
extern "js" fn Nullable::is_null_ffi(self : Any) -> Bool =
#|self => self === null
///|
pub fn[T] Nullable::is_null(self : Nullable[T]) -> Bool {
Nullable::is_null_ffi(Any::from(self))
}
///|
pub fn[T] Nullable::unwrap(self : Nullable[T]) -> T = "%identity"
///|
pub fn[T] Nullable::to_option(self : Nullable[T]) -> T? {
if Nullable::is_null(self) {
None
} else {
Some(self.unwrap())
}
}