ramda / types

MIT License
26 stars 21 forks source link

@types/ramda failing under 5.4 #103

Closed jakebailey closed 6 months ago

jakebailey commented 6 months ago

The types package is currently failing in our nightly run:

Error in ramda
Error: 
/home/runner/work/DefinitelyTyped/DefinitelyTyped/types/ramda/test/allPass-tests.ts
  15:5  error  TypeScript@5.4 expected type to be:
  (x: number) => boolean
got:
  (a: number) => boolean  @definitelytyped/expect

/home/runner/work/DefinitelyTyped/DefinitelyTyped/types/ramda/test/anyPass-tests.ts
  15:5  error  TypeScript@5.4 expected type to be:
  (x: number) => boolean
got:
  (a: number) => boolean  @definitelytyped/expect

/home/runner/work/DefinitelyTyped/DefinitelyTyped/types/ramda/test/assoc-tests.ts
  86:20  error  TypeScript@5.4 compile error: 
This expression is not callable.
  Type 'Record<string, unknown>' has no call signatures                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      @definitelytyped/expect
  86:30  error  TypeScript@5.4 compile error: 
No overload matches this call.
  Overload 1 of 9, '(...func: [fnLast: (a: any) => Record<string, unknown>, ...func: ((a: any) => any)[], f7: (a: unknown) => unknown, f6: (a: unknown) => unknown, f5: (a: unknown) => unknown, f4: (a: unknown) => unknown, f3: (a: unknown) => unknown, f2: (a: unknown) => unknown, f1: (...args: any[]) => unknown]): (...args: any[]) => Record<string, unknown>', gave the following error.
    Argument of type '{ <K extends string>(prop: K): { <T>(val: T): { <U extends Record<K, T>>(obj: U): U; <U extends Record<K, any>>(obj: U): Record<K, T> & Omit<U, K>; <U>(obj: U): U & Record<...>; }; <U extends Record<...>>(__: Placeholder, obj: U): { ...; }; <U>(__: Placeholder, obj: U): <T>(val: T) => U & Record<...>; <T, U extends ...' is not assignable to parameter of type '(a: any) => Record<string, unknown>'.
      Type '{ <T>(val: T): { <U extends Record<any, T>>(obj: U): U; <U extends Record<any, any>>(obj: U): Record<any, T> & Omit<U, any>; <U>(obj: U): U & Record<...>; }; <U extends Record<...>>(__: Placeholder, obj: U): { ...; }; <U>(__: Placeholder, obj: U): <T>(val: T) => U & Record<...>; <T, U extends Record<...>>(val: T, ob...' is not assignable to type 'Record<string, unknown>'.
        Index signature for type 'string' is missing in type '{ <T>(val: T): { <U extends Record<any, T>>(obj: U): U; <U extends Record<any, any>>(obj: U): Record<any, T> & Omit<U, any>; <U>(obj: U): U & Record<...>; }; <U extends Record<...>>(__: Placeholder, obj: U): { ...; }; <U>(__: Placeholder, obj: U): <T>(val: T) => U & Record<...>; <T, U extends Record<...>>(val: T, ob...'.
  Overload 2 of 9, '(f2: (a: string) => Record<string, unknown>, f1: (val: unknown) => string): (val: unknown) => Record<string, unknown>', gave the following error.
    Argument of type '{ <K extends string>(prop: K): { <T>(val: T): { <U extends Record<K, T>>(obj: U): U; <U extends Record<K, any>>(obj: U): Record<K, T> & Omit<U, K>; <U>(obj: U): U & Record<...>; }; <U extends Record<...>>(__: Placeholder, obj: U): { ...; }; <U>(__: Placeholder, obj: U): <T>(val: T) => U & Record<...>; <T, U extends ...' is not assignable to parameter of type '(a: string) => Record<string, unknown>'.
      Type '{ <T>(val: T): { <U extends Record<any, T>>(obj: U): U; <U extends Record<any, any>>(obj: U): Record<any, T> & Omit<U, any>; <U>(obj: U): U & Record<...>; }; <U extends Record<...>>(__: Placeholder, obj: U): { ...; }; <U>(__: Placeholder, obj: U): <T>(val: T) => U & Record<...>; <T, U extends Record<...>>(val: T, ob...' is not assignable to type 'Record<string, unknown>'  @definitelytyped/expect
  87:20  error  TypeScript@5.4 compile error: 
This expression is not callable.
  Type 'Record<string, unknown>' has no call signatures                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      @definitelytyped/expect
  87:30  error  TypeScript@5.4 compile error: 
No overload matches this call.
  Overload 1 of 9, '(...func: [fnLast: (a: any) => Record<string, unknown>, ...func: ((a: any) => any)[], f7: (a: unknown) => unknown, f6: (a: unknown) => unknown, f5: (a: unknown) => unknown, f4: (a: unknown) => unknown, f3: (a: unknown) => unknown, f2: (a: unknown) => unknown, f1: (...args: any[]) => unknown]): (...args: any[]) => Record<string, unknown>', gave the following error.
    Argument of type '{ <K extends string>(prop: K): { <T>(val: T): { <U extends Record<K, T>>(obj: U): U; <U extends Record<K, any>>(obj: U): Record<K, T> & Omit<U, K>; <U>(obj: U): U & Record<...>; }; <U extends Record<...>>(__: Placeholder, obj: U): { ...; }; <U>(__: Placeholder, obj: U): <T>(val: T) => U & Record<...>; <T, U extends ...' is not assignable to parameter of type '(a: any) => Record<string, unknown>'.
  Overload 2 of 9, '(f2: (a: string) => Record<string, unknown>, f1: (val: unknown) => string): (val: unknown) => Record<string, unknown>', gave the following error.
    Argument of type '{ <K extends string>(prop: K): { <T>(val: T): { <U extends Record<K, T>>(obj: U): U; <U extends Record<K, any>>(obj: U): Record<K, T> & Omit<U, K>; <U>(obj: U): U & Record<...>; }; <U extends Record<...>>(__: Placeholder, obj: U): { ...; }; <U>(__: Placeholder, obj: U): <T>(val: T) => U & Record<...>; <T, U extends ...' is not assignable to parameter of type '(a: string) => Record<string, unknown>'                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         @definitelytyped/expect

/home/runner/work/DefinitelyTyped/DefinitelyTyped/types/ramda/test/complement-tests.ts
  24:5  error  TypeScript@5.4 expected type to be:
  (value: any) => value is any
got:
  <T>(value: T) => value is Exclude<T, (null | undefined) & T>  @definitelytyped/expect

/home/runner/work/DefinitelyTyped/DefinitelyTyped/types/ramda/test/filter-tests.ts
  38:14  error  TypeScript@5.4 compile error: 
No overload matches this call.
  Overload 1 of 5, '(pred: (val: { type: string; }) => val is { type: string; }, list: readonly { type: string; }[]): { type: string; }[]', gave the following error.
    Argument of type '<U extends Partial<Record<"type", any>>>(obj: Required<U> extends Record<"type", any> ? string extends WidenLiterals<U["type"]> ? U : never : never) => boolean' is not assignable to parameter of type '(val: { type: string; }) => val is { type: string; }'.
      Signature '(obj: { type: string; }): boolean' must be a type predicate.
  Overload 2 of 5, '(pred: (val: unknown) => val is unknown, dict: Record<string, unknown>): Record<string, unknown>', gave the following error.
    Argument of type '<U extends Partial<Record<"type", any>>>(obj: Required<U> extends Record<"type", any> ? string extends WidenLiterals<U["type"]> ? U : never : never) => boolean' is not assignable to parameter of type '(val: unknown) => val is unknown'.
      Types of parameters 'obj' and 'val' are incompatible.
        Type 'unknown' is not assignable to type 'Partial<Record<"type", any>>'.
  Overload 3 of 5, '(pred: (value: unknown) => boolean, collection: { type: string; }[]): { type: string; }[]', gave the following error.
    Argument of type '<U extends Partial<Record<"type", any>>>(obj: Required<U> extends Record<"type", any> ? string extends WidenLiterals<U["type"]> ? U : never : never) => boolean' is not assignable to parameter of type '(value: unknown) => boolean'.
      Types of parameters 'obj' and 'value' are incompatible.
        Type 'unknown' is not assignable to type 'Partial<Record<"type", any>>'  @definitelytyped/expect

/home/runner/work/DefinitelyTyped/DefinitelyTyped/types/ramda/test/pick-tests.ts
  23:11  error  TypeScript@5.4 compile error: 
Type 'Pick<string[], number>' is missing the following properties from type '{ 1: string; 2: string; }': 1, 2           @definitelytyped/expect
  24:11  error  TypeScript@5.4 compile error: 
Type 'Pick<["a", "b", "c", "d"], number>' is missing the following properties from type '{ 1: "b"; 2: "c"; }': 1, 2     @definitelytyped/expect
  25:11  error  TypeScript@5.4 compile error: 
Property '0' is missing in type 'Pick<[string, string, string, string], number>' but required in type '{ 0: string; }'  @definitelytyped/expect
  26:11  error  TypeScript@5.4 compile error: 
Property '0' is missing in type 'Pick<["a", "b", "c", "d"], number>' but required in type '{ 0: "a"; }'                 @definitelytyped/expect
  33:5   error  TypeScript@5.4 compile error: 
Unused '@ts-expect-error' directive                                                                                     @definitelytyped/expect

/home/runner/work/DefinitelyTyped/DefinitelyTyped/types/ramda/test/propEq-tests.ts
  14:11  error  TypeScript@5.4 compile error: 
Type '<U extends Partial<Record<5, any>>>(obj: Required<U> extends Record<5, any> ? string extends WidenLiterals<U[5]> ? U : never : never) => boolean' is not assignable to type '(obj: Record<number, string>) => boolean'.
  Types of parameters 'obj' and 'obj' are incompatible.
    Type 'Record<number, string>' is not assignable to type 'never'  @definitelytyped/expect
  43:5   error  TypeScript@5.4 compile error: 
Unused '@ts-expect-error' directive                                                                                                                                                                                                                                                                                                                        @definitelytyped/expect

✖ 15 problems (15 errors, 0 warnings)

Since the package is not on DT, I'm assuming many of the fixes need to happen here, unless some of these are intentional and should be updated. I haven't seen any specific PRs or issues related to these failures, but happy to be wrong and dedupe this elsewhere.

(The function parameter name thing is an easy fix, but the rest... no clue.)

jakebailey commented 6 months ago

Just noticed https://github.com/DefinitelyTyped/DefinitelyTyped/pull/68695, oops!

Harris-Miller commented 6 months ago

@jakebailey just pushed fixes to https://github.com/DefinitelyTyped/DefinitelyTyped/pull/68695

jakebailey commented 6 months ago

Thank you!