Skip to content

Cannot use Parameters in generic function #39378

@akwodkiewicz

Description

@akwodkiewicz

I cannot use generic fn's Parameters when calling fn.

TypeScript Version: 3.9.2

Search Terms:
wrong generic function infer parameters

Code

const functionDict = {
    A: (a: any) => ({ a }),
    B: (a: any, b: string) => ({ a, b }),
    C: (a: any, b: string, c: string) => ({ a, b, c }),
};

type ValueOf<T> = T[keyof T];

export function foo<F extends ValueOf<typeof functionDict>>(
    fn: F,
    pp: Parameters<F>,
): void {
    fn(...pp);
}

Expected behavior:
No error.

Actual behavior:
Error: Expected 3 arguments, but got 0 or more.(2556)
input.ts(4, 9): An argument for 'a' was not provided

Playground Link: https://www.typescriptlang.org/play/#code/MYewdgzgLgBAZgVzMKBLcARVKYF4YDeAsAFAzkwCCAXDABQCGtDYAngJR4B89BMDMAL7sANKQowAQrUbM2ImACNa0AE6owAc064edPgwWKho8RQDCMpv3lKVUdVoXB7j7d178jzk2JKCAblJSKFYABwBTGAA1BgAbBAiAeTgAHgAVHnx0gG0AawjWEDgYdIBdIJJSCIAPMJBVWERkNHB4EBBUgDEYWqgIsAATCBj4xJTU0Mji+CQUdDAsFC4uOjNyODBaLr8JMLDaAAUGVQYAWwj+1Qhurj92WgA3EFRBwnX4MDoAOl-99kqglIQA

Related Issues:

Metadata

Metadata

Assignees

No one assigned

    Labels

    Working as IntendedThe behavior described is the intended behavior; this is not a bug

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions