<!-- 🚨 STOP 🚨 𝗦𝗧𝗢𝗣 🚨 𝑺𝑻𝑶𝑷 🚨 Half of all issues filed here are duplicates, answered in the FAQ, or not appropriate for the bug tracker. Even if you think you've found a *bug*, please read the FAQ first, especially the Common "Bugs" That Aren't Bugs section! Please help us by doing the following steps before logging an issue: * Search: https://github.com/Microsoft/TypeScript/search?type=Issues * Read the FAQ: https://github.com/Microsoft/TypeScript/wiki/FAQ Please fill in the *entire* template below. --> <!-- Please try to reproduce the issue with `typescript@next`. It may have already been fixed. --> **TypeScript Version:** 3.3.1 <!-- Search terms you tried before logging this (so others can find this issue more easily) --> **Search Terms:** **Code** - when `strictFunctionTypes` is disabled - when first composed function parameter is optional - when first `pipe` overload is zero parameters for first function ```ts declare const pipe: { // 0-argument first function // Workaround: disable this overload <A>(a: () => A): () => A; // 1-argument first function <A, B>(ab: (a: A) => B): (a: A) => B; }; // Expected type: `(a: {} | undefined) => number` // Actual type: `() => number` const fn = pipe((_a?: {}) => 1); ``` **Related Issues:** <!-- Did you find other bugs that looked similar? --> https://github.com/Microsoft/TypeScript/issues/29904