Skip to content

Adding support for type guards to partition function. #463

@kaciakmaciak

Description

@kaciakmaciak

Hi, could you please add support for the type guards for the partition function.

Use case:

function isNumber(value: unknown): value is number {
  return typeof value === 'number' && !Number.isNaN(value);
}

const someList: Array<unknown> = ['bla', 'foo', 'bar', 1, 2, 3, undefined, null];

const [numbers, others] = R.partition(isNumber, someList);

Currently, both numbers and others arrays type is unknown[]. It would be helpful if the numbers type is number[].

We used the patch package to temporarily fix this:

diff --git [a/node_modules/@types/ramda/index.d.ts](mailto:a/node_modules/@types/ramda/index.d.ts) [b/node_modules/@types/ramda/index.d.ts](mailto:b/node_modules/@types/ramda/index.d.ts)
index 402e443..0a3040f 100755
--- [a/node_modules/@types/ramda/index.d.ts](mailto:a/node_modules/@types/ramda/index.d.ts)
+++ [b/node_modules/@types/ramda/index.d.ts](mailto:b/node_modules/@types/ramda/index.d.ts)
@@ -3733,7 +3733,9 @@ export function partialRight<T>(fn: (...args: any[]) => T, args: unknown[]): (..
  * ```
  */
export function partition(fn: (a: string) => boolean, list: readonly string[]): [string[], string[]];
+export function partition<T, P>(fn: (a: T) => a is P, list: readonly T[]): [P[], T[]];
export function partition<T>(fn: (a: T) => boolean, list: readonly T[]): [T[], T[]];
+export function partition<T, P>(fn: (a: T) => a is P): (list: readonly T[]) => [P[], T[]];
export function partition<T>(fn: (a: T) => boolean): (list: readonly T[]) => [T[], T[]];
export function partition(fn: (a: string) => boolean): (list: readonly string[]) => [string[], string[]];

Please let us know if you need any help in this. Can help.

Cheers, Katarina

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions