UNPKG

@etsoo/shared

Version:

TypeScript shared utilities and functions

65 lines (64 loc) 2.33 kB
import { DataTypes } from "./DataTypes"; declare global { interface Array<T> { /** * Items do not exist in target array or reverse match * @param target Target array * @param round A round for both matches */ different(target: Array<T>, round?: boolean): Array<T>; /** * Get max number item or number item property * @param field Object field to calculate */ max(...field: T extends number ? [undefined?] : T extends object ? [DataTypes.Keys<T, number>] : [never]): number; /** * Get max field value item * @param field Object field to calculate */ maxItem(field: T extends object ? DataTypes.Keys<T, number> : never): T | undefined; /** * Get min number item or number item property * @param field Object field to calculate */ min(...field: T extends number ? [undefined?] : T extends object ? [DataTypes.Keys<T, number>] : [never]): number; /** * Get min field value item * @param field Object field to calculate */ minItem(field: T extends object ? DataTypes.Keys<T, number> : never): T | undefined; /** * Remove items by value or condition * @param items Items to remove */ remove(...items: ((T & (DataTypes.Basic | object)) | ((item: T) => boolean))[]): T[]; /** * Sort by property * @param property Property * @param values Property values */ sortByProperty<P extends keyof T>(property: P, values: T[P][]): T[]; /** * Sum number items or number item properties * @param field Object field to calculate */ sum(...field: T extends number ? [undefined?] : T extends object ? [DataTypes.Keys<T, number>] : [never]): number; /** * Make all items are unique * @param this Input array */ toUnique(): Array<T>; } } /** * Array Utilities */ export declare namespace ArrayUtils { /** * Array 1 items do not exist in Array 2 or reverse match * @param a1 Array 1 * @param a2 Array 2 * @param round A round for both matches */ function differences<T>(a1: T[], a2: T[], round?: boolean): T[]; }