Microsoft/TypeScript

Only `null` and `undefined` included in later overloads during inference between overloads

Open

#47.586 aberto em 25 de jan. de 2022

Ver no GitHub
 (2 comments) (2 reactions) (0 assignees)TypeScript (6.726 forks)batch import
Help WantedNeeds Investigation

Métricas do repositório

Stars
 (48.455 stars)
Métricas de merge de PR
 (Mesclagem média 6d 17h) (9 fundiu PRs em 30d)

Description

Bug Report

🔎 Search Terms

overload null undefined

🕗 Version & Regression Information

  • This is the behavior in every version I tried, and I wrote the FAQ

⏯ Playground Link

Playground link with relevant code

💻 Code

This is a bit over-reduced but it's still weird

declare function callIt<T>(func: {
    (): T;
    (): T;
}): T;

declare function overloaded(): string;
declare function overloaded(): number | null;

// m: string | null. Where'd number go?
const m = callIt(overloaded);

🙁 Actual behavior

m: string | null

🙂 Expected behavior

m: string | number | null

This feels intentional since it only null and undefined make it out of the second signature, but I can't find where we do this or what the motivation behind it is.

Guia do colaborador