UNPKG

voided-data

Version:

Proper DS for TS

33 lines (32 loc) 1.07 kB
/** * @startuml * enum Maybe<T> <<(U, white)>> { * } * * struct Some<T> { * } * struct None<T> { * } * * Maybe <|-- Some * Maybe <|-- None * @enduml */ export interface Maybe<Just> { map: <NewJust>(m: (just: Just) => NewJust) => Maybe<NewJust>; match: <Some, None>(onSome: (just: Just) => Some, onNone: () => None) => Some | None; } interface Some<Just> extends Maybe<Just> { just: Just; map: <NewJust>(m: (just: Just) => NewJust) => Some<NewJust>; match: <Some, None>(onSome: (just: Just) => Some, onNone: () => None) => Some; } interface None<Just> extends Maybe<Just> { map: <NewJust>(m: (just: Just) => NewJust) => None<NewJust>; match: <Some, None>(onSome: (just: Just) => Some, onNone: () => None) => None; } export declare function isSome<Just>(maybe: Maybe<Just>): maybe is Some<Just>; export declare function isNone<Just>(maybe: Maybe<Just>): maybe is None<Just>; export declare function some<Just>(just: Just): Some<Just>; export declare function none<Just>(): None<Just>; export {};