UNPKG

@typedly/array

Version:

A TypeScript type definitions package to handle array-related operations.

25 lines (24 loc) 981 B
/** * @description Removes the `Element` type from generic type variable `Array`. * @export * @template {readonly Type[]} Array * @template {Type} Elements * @template [Type=any] * @example * import { Remove } from '@typedly/array'; * * type Example1 = Remove<[1, 2, 3], 2>; // [1, 3] * type Example2 = Remove<[1, 2, 3], 4>; // [1, 2, 3] (unchanged) * type Example3 = Remove<['a', 'b', 'a'], 'a'>; // ['b'] (removes all occurrences) * type Example4 = Remove<[], 'x'>; // [] (empty stays empty) * * const example1: Example1 = [1, 3]; * const example2: Example2 = [1, 2, 3]; * const example3: Example3 = ['b']; * const example4: Example4 = []; */ /** * @description * @export */ export type Remove<Array extends readonly Type[], Elements extends Type, Type = any> = Array extends [infer First extends Type, ...infer Rest extends readonly Type[]] ? First extends Elements ? Remove<Rest, Elements, Type> : [First, ...Remove<Rest, Elements, Type>] : [];