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 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88
|
tests/cases/compiler/recursiveFunctionTypes.ts(1,28): error TS2322: Type '1' is not assignable to type '() => typeof fn'.
tests/cases/compiler/recursiveFunctionTypes.ts(3,5): error TS2322: Type '() => typeof fn' is not assignable to type 'number'.
tests/cases/compiler/recursiveFunctionTypes.ts(4,5): error TS2322: Type '() => typeof fn' is not assignable to type '() => number'.
Type '() => typeof fn' is not assignable to type 'number'.
tests/cases/compiler/recursiveFunctionTypes.ts(11,16): error TS2355: A function whose declared type is neither 'void' nor 'any' must return a value.
tests/cases/compiler/recursiveFunctionTypes.ts(12,16): error TS2355: A function whose declared type is neither 'void' nor 'any' must return a value.
tests/cases/compiler/recursiveFunctionTypes.ts(17,5): error TS2322: Type '() => I<typeof f3>' is not assignable to type 'number'.
tests/cases/compiler/recursiveFunctionTypes.ts(22,5): error TS2345: Argument of type '3' is not assignable to parameter of type '(t: typeof g) => void'.
tests/cases/compiler/recursiveFunctionTypes.ts(25,1): error TS2322: Type '3' is not assignable to type '() => any'.
tests/cases/compiler/recursiveFunctionTypes.ts(30,10): error TS2394: Overload signature is not compatible with function implementation.
tests/cases/compiler/recursiveFunctionTypes.ts(33,1): error TS2554: Expected 0-1 arguments, but got 2.
tests/cases/compiler/recursiveFunctionTypes.ts(34,4): error TS2345: Argument of type '""' is not assignable to parameter of type '{ (): typeof f6; (a: typeof f6): () => number; }'.
tests/cases/compiler/recursiveFunctionTypes.ts(42,1): error TS2554: Expected 0-1 arguments, but got 2.
tests/cases/compiler/recursiveFunctionTypes.ts(43,4): error TS2345: Argument of type '""' is not assignable to parameter of type '{ (): typeof f7; (a: typeof f7): () => number; (a: number): number; (a?: typeof f7): typeof f7; }'.
==== tests/cases/compiler/recursiveFunctionTypes.ts (13 errors) ====
function fn(): typeof fn { return 1; }
~~~~~~~~~
!!! error TS2322: Type '1' is not assignable to type '() => typeof fn'.
var x: number = fn; // error
~
!!! error TS2322: Type '() => typeof fn' is not assignable to type 'number'.
var y: () => number = fn; // ok
~
!!! error TS2322: Type '() => typeof fn' is not assignable to type '() => number'.
!!! error TS2322: Type '() => typeof fn' is not assignable to type 'number'.
var f: () => typeof g;
var g: () => typeof f;
function f1(d: typeof f1) { }
function f2(): typeof g2 { }
~~~~~~~~~
!!! error TS2355: A function whose declared type is neither 'void' nor 'any' must return a value.
function g2(): typeof f2 { }
~~~~~~~~~
!!! error TS2355: A function whose declared type is neither 'void' nor 'any' must return a value.
interface I<T> { }
function f3(): I<typeof f3> { return f3; }
var a: number = f3; // error
~
!!! error TS2322: Type '() => I<typeof f3>' is not assignable to type 'number'.
class C {
static g(t: typeof C.g){ }
}
C.g(3); // error
~
!!! error TS2345: Argument of type '3' is not assignable to parameter of type '(t: typeof g) => void'.
var f4: () => typeof f4;
f4 = 3; // error
~~
!!! error TS2322: Type '3' is not assignable to type '() => any'.
function f5() { return f5; }
function f6(): typeof f6;
function f6(a: typeof f6): () => number;
~~
!!! error TS2394: Overload signature is not compatible with function implementation.
function f6(a?: any) { return f6; }
f6("", 3); // error (arity mismatch)
~~~~~~~~~
!!! error TS2554: Expected 0-1 arguments, but got 2.
f6(""); // ok (function takes an any param)
~~
!!! error TS2345: Argument of type '""' is not assignable to parameter of type '{ (): typeof f6; (a: typeof f6): () => number; }'.
f6(); // ok
declare function f7(): typeof f7;
declare function f7(a: typeof f7): () => number;
declare function f7(a: number): number;
declare function f7(a?: typeof f7): typeof f7;
f7("", 3); // error (arity mismatch)
~~~~~~~~~
!!! error TS2554: Expected 0-1 arguments, but got 2.
f7(""); // ok (function takes an any param)
~~
!!! error TS2345: Argument of type '""' is not assignable to parameter of type '{ (): typeof f7; (a: typeof f7): () => number; (a: number): number; (a?: typeof f7): typeof f7; }'.
f7(); // ok
|