Microsoft/TypeScript

'Any' on anonymous function argument response in generic

Open

#47,858 opened on Feb 12, 2022

View on GitHub
 (2 comments) (3 reactions) (0 assignees)TypeScript (6,726 forks)batch import
BugDomain: check: Type InferenceHelp Wanted

Repository metrics

Stars
 (48,455 stars)
PR merge metrics
 (Avg merge 6d 17h) (9 merged PRs in 30d)

Description

Bug Report

🔎 Search Terms

  • Anonymous function response

🕗 Version & Regression Information

4.5 and below

⏯ Playground Link

Simplified:

https://www.typescriptlang.org/play?#code/GYVwdgxgLglg9mABFATgQzAZ2HFBbAHgHlEBTADylLABNNEBvRAbQGtSBPALkU1RjABzALo8AFADopaFIMw8MHZsICUiALwA+RGJmCeYEHgBGpFGq2IAbnBg1EAX01iBABxBQeRNQwBQvh39UDGxcPDE-RCjEYDAARnE3Dx4+FAFBC20xGjQoNEzGf2jHABpfYuAAJkSwd09efiECyOLolFIoEBQkbNz8jW0-ctaowOKHMoqwAGYXWuSGtKbCkaj2zu6dHLzmotWx6ImAlV8gA

Actual:

https://www.typescriptlang.org/play?useUnknownInCatchVariables=true&ts=4.5.4#code/C4TwDgpgBAsghiARhACgJwPYFsCWBnCAHgBUA+KAXimKgB8p1t8iyAoUSKAZWDmAgBmAVwA2AJQh5CXclXhJUmXAUIAKOGgDmALm4BKSuS50oANww4AJqXbhoPPoNEBBAMbAcGAHYBhNBD4MNGlZKFUAOkiNTTxdOC8QAG0AXQMKI15+YXFJENZWHC9+NAE4V2g3D28uCGAQqABvVigWqESAawgQXTxgNELNZN0HLJd3T19-QOCZVgBffMLi0vKoSomACXjLEQhg5ygIAA9+L0s8KHik5PIm1rDI8OjYtb1dcyt5xaK9lYq8EBeVzrbxbM67faHE4QM4XK4pW7NVoRKJaF7ON4MJTMQgfaxfViuERwPAXFAYSzSAA0a0R9zA-VMjighRwHjgIhGEGGSJaDJwTP4l3G1Vqumc+Xurm8vTQQncQVUrPZnMy3O4NLKVS8NWAlEac0uFwxjV59ygwAAFvhwsqcByufq7Q61Wb7labVqJrr9V7RcAzQszd5CAB5KGnc5rEU62ohUiqDCIABWulDmPJlK4NIOADJGlA3a1EgBpFleKCdEAYARQUNDOul5IRmFRlFPNG6QoCPYMNLkbu9sRF81QAD8UDELdhWKYKiuNlHS9aE+cAKBIK8YJ2e0IKEXy6X4pj24he4Ph6guiEXnaXgwAHcvIG6Uv-MAhGgK14IA+GBTVA9PBbS8Nl7VVRw9EDAlpS8XooDQfUfz-TNVAaKBpRvYBdAARgABigOYoPucJvDQkcjUBVwMMtCBXHaVQqx6PoBgMO5LygAB6TiMJlPUKyoOAHzgNlKKBHwORERiumIjj30-CtVDwftTQ481uKgYDMKKKAAGoqGfNSFmXOYqQov0vF0VRLKgLwhCwZA0BU9jL3kr8wmUwxVLU1oNK0jAsL0gyKPuYyl1M8zLEsKybLshy9hUpTnJC1p-MC-TbIosKWiI1ggA

💻 Code

function transform<O extends { [key: string]: (...args: any[]) => (arg: number) => void }>(input: O) {

}

transform({
    fn1: (input: string) => (data) => {

    },
    f2: (input: string) => {
        return (data) => { // coming back as any instead of number

        }
    },
    fn3(input: string) {
        return (data) => {

        }
    },
})

🙁 Actual behavior

The generic argument in the return function is coming back as any instead of number when it's returned as an anonymous inline function.

🙂 Expected behavior

Expecting the inline anonymous function response to be of type number.

Contributor guide