Microsoft/TypeScript
Voir sur GitHubOnly `null` and `undefined` included in later overloads during inference between overloads
Open
#47 586 ouverte le 25 janv. 2022
Help WantedNeeds Investigation
Métriques du dépôt
- Stars
- (48 455 stars)
- Métriques de merge PR
- (Merge moyen 6j 17h) (9 PRs mergées en 30 j)
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.