Microsoft/TypeScript
Vedi su GitHubOnly `null` and `undefined` included in later overloads during inference between overloads
Open
#47.586 aperta il 25 gen 2022
Help WantedNeeds Investigation
Metriche repository
- Star
- (48.455 star)
- Metriche merge PR
- (Merge medio 6g 17h) (9 PR mergiate in 30 g)
Descrizione
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.