Microsoft/TypeScript

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

開放

#47,586 建立於 2022年1月25日

 (2 則留言) (2 個反應) (0 位負責人)TypeScript (13,395 個分叉)batch import
Help WantedNeeds Investigation

倉庫指標

星標
 (108,860 顆星)
PR 合併指標
 (PR 指標待抓取)

描述

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.

貢獻者指南