TypeScript types and utility functions for handling Web Annotations.

web-annotation-utils/lib/ multiplicity-utils.d.ts
7 lines
476 B

  1. export declare type OneOrMore<T> = T | T[];
  2. export declare type ZeroOrMore<T> = undefined | null | T | T[];
  3. export declare type OneOrMoreIncluding<Other extends any, RequiredValue extends any> = RequiredValue | [RequiredValue, ...Other[]] | [...Other[], RequiredValue];
  4. export declare type OnlyOne<T> = T extends (infer X)[] ? X : T;
  5. export declare function asArray<T>(value: ZeroOrMore<T>): T[];
  6. export declare function asSingleValue<T>(value: ZeroOrMore<T>): T | undefined;