Optional parameters based on conditional types
You can do this in 3.1 using Tuples in rest parameters and spread expressions const foo = <T extends string | number>( first: T, …a: (T extends string ? [boolean] : [undefined?]) ) => undefined; foo(‘foo’, true); // ok, as intended foo(2, true); // not ok, as intended foo(2, undefined); // ok, as intended foo(2); … Read more