# Option API Surface These are ALL available methods for Option. Do not use any method not listed here. ## Types ```typescript type Option = Some | None type OptionPromise = Promise> type SomePromise = Promise> type NonePromise = Promise type OptionPartitionResult = { values: T[]; noneCount: number } type OptionFromType = /* conditional: Some> if T excludes null|undefined, else Option> */ ``` ## Factory Functions ```typescript function some(value: T): Some function none(): None // returns frozen singleton ``` ## Some Instance Methods ```typescript class Some { readonly value: T isSome(): this is Some isNone(): this is never map(fn: (value: T) => U): Some flatMap>(fn: (value: T) => R): R match(onSome: (value: T) => U, onNone: () => U): U // Overload 1: type-narrowing predicate filter(predicate: (value: T) => value is U): Option // Overload 2: boolean predicate filter(predicate: (value: T) => boolean): Option toNullable(): T toUndefined(): T toString(): string } ``` ## None Instance Methods ```typescript class None { // None has no .value property isSome(): this is never isNone(): this is None map(): None flatMap(): this match(onSome: (value: never) => U, onNone: () => U): U filter(): None toNullable(): null toUndefined(): undefined toString(): string } ``` ## NOT available on Option (Result/Query only) - `mapErr()` — does not exist - `flatMapErr()` — does not exist ## Option Namespace (Static Methods) ```typescript Option.from(value: T): OptionFromType Option.from(fn: () => T): OptionFromType Option.isOption(value: unknown): value is Option Option.all(options: Some[]): Some Option.all(options: Option[]): Option Option.partition(options: Option[]): OptionPartitionResult Option.compact(options: Option[]): T[] Option.some(options: Option[]): boolean Option.every(options: Option[]): boolean ``` ## OptionPromise Namespace (Async Methods) ```typescript OptionPromise.from(fn: () => Promise): Promise> OptionPromise.all(promises: Promise>[]): Promise> OptionPromise.all(promises: Promise>[]): Promise> OptionPromise.partition(promises: Promise>[]): Promise> OptionPromise.compact(promises: Promise>[]): Promise OptionPromise.some(promises: Promise>[]): Promise OptionPromise.every(promises: Promise>[]): Promise ```