1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
|
=== tests/cases/compiler/genericFunctionsWithOptionalParameters2.ts ===
interface Utils {
fold<T, S>(c: Array<T>, folder?: (s: S, t: T) => T, init?: S): T;
>fold : <T, S>(c: T[], folder?: (s: S, t: T) => T, init?: S) => T
>c : T[]
>folder : (s: S, t: T) => T
>s : S
>t : T
>init : S
}
var utils: Utils;
>utils : Utils
utils.fold(); // error
>utils.fold() : any
>utils.fold : <T, S>(c: T[], folder?: (s: S, t: T) => T, init?: S) => T
>utils : Utils
>fold : <T, S>(c: T[], folder?: (s: S, t: T) => T, init?: S) => T
utils.fold(null); // no error
>utils.fold(null) : {}
>utils.fold : <T, S>(c: T[], folder?: (s: S, t: T) => T, init?: S) => T
>utils : Utils
>fold : <T, S>(c: T[], folder?: (s: S, t: T) => T, init?: S) => T
>null : null
utils.fold(null, null); // no error
>utils.fold(null, null) : {}
>utils.fold : <T, S>(c: T[], folder?: (s: S, t: T) => T, init?: S) => T
>utils : Utils
>fold : <T, S>(c: T[], folder?: (s: S, t: T) => T, init?: S) => T
>null : null
>null : null
utils.fold(null, null, null); // error: Unable to invoke type with no call signatures
>utils.fold(null, null, null) : {}
>utils.fold : <T, S>(c: T[], folder?: (s: S, t: T) => T, init?: S) => T
>utils : Utils
>fold : <T, S>(c: T[], folder?: (s: S, t: T) => T, init?: S) => T
>null : null
>null : null
>null : null
|