UNPKG

@hazae41/option

Version:

Rust-like Option for TypeScript

1 lines 1.44 kB
{"version":3,"file":"option.mjs","sources":["../../../../src/mods/option/option.ts"],"sourcesContent":["import { None, NoneInit } from \"./none.js\";\nimport { Some, SomeInit } from \"./some.js\";\n\nexport type Nullable<T> =\n T | undefined | null\n\nexport type Optional<T> =\n T | undefined\n\nexport type NonOptional<T> =\n Exclude<T, undefined>\n\nexport type Option<T> =\n | Some<T>\n | None\n\nexport type OptionInit<T> =\n | SomeInit<T>\n | NoneInit\n\nexport namespace Option {\n\n export function from<T>(init: OptionInit<T>): Option<T> {\n if (\"inner\" in init)\n return new Some(init.inner)\n return new None()\n }\n\n /**\n * Create an Option from a nullable value\n * @param inner \n * @returns `Some<T>` if `T`, `None` if `undefined`\n */\n export function wrap<T>(inner: Nullable<T>): Option<T> {\n if (inner == null)\n return new None()\n return new Some(inner)\n }\n\n}"],"names":[],"mappings":";;;AAoBM,IAAW,OAmBhB;AAnBD,CAAA,UAAiB,MAAM,EAAA;IAErB,SAAgB,IAAI,CAAI,IAAmB,EAAA;QACzC,IAAI,OAAO,IAAI,IAAI;AACjB,YAAA,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAC7B,OAAO,IAAI,IAAI,EAAE,CAAA;KAClB;AAJe,IAAA,MAAA,CAAA,IAAI,OAInB,CAAA;AAED;;;;AAIG;IACH,SAAgB,IAAI,CAAI,KAAkB,EAAA;QACxC,IAAI,KAAK,IAAI,IAAI;YACf,OAAO,IAAI,IAAI,EAAE,CAAA;AACnB,QAAA,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,CAAA;KACvB;AAJe,IAAA,MAAA,CAAA,IAAI,OAInB,CAAA;AAEH,CAAC,EAnBgB,MAAM,KAAN,MAAM,GAmBtB,EAAA,CAAA,CAAA;;;;"}