UNPKG

zent

Version:

一套前端设计语言和基于React的实现

28 lines (20 loc) 500 B
const SOME = Symbol('some'); export interface ISome<T> { [SOME]: true; value: T; } export type Maybe<T> = ISome<T> | null | undefined; export const Some = <T>(value: T): ISome<T> => ({ [SOME]: true, value, }); export const None = () => null; export function or<T>(maybe: Maybe<T>, def: () => T) { return maybe ? maybe.value : def(); } export function isSome<T>(maybe: Maybe<T>): maybe is ISome<T> { return !!maybe; } export function get<T>(some: ISome<T>) { return some.value; }