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
|
//// [parameterInitializersForwardReferencing1.ts]
let foo: string = "";
function f1 (bar = foo) { // unexpected compiler error; works at runtime
var foo: number = 2;
return bar; // returns 1
}
function f2 (bar = (baz = foo) => baz) { // unexpected compiler error; works at runtime
var foo: number = 2;
return bar(); // returns 1
}
function f3 (bar = foo, foo = 2) { // correct compiler error, error at runtime
return bar;
}
function f4 (foo, bar = foo) {
return bar
}
function f5 (a = a) {
return a
}
function f6 (async = async) {
return async
}
function f7({[foo]: bar}: any[]) {
let foo: number = 2;
}
class Foo {
constructor(public x = 12, public y = x) {}
}
function f8(foo1: string, bar = foo1) { }
//// [parameterInitializersForwardReferencing1.js]
var foo = "";
function f1(bar) {
if (bar === void 0) { bar = foo; }
var foo = 2;
return bar; // returns 1
}
function f2(bar) {
if (bar === void 0) { bar = function (baz) {
if (baz === void 0) { baz = foo; }
return baz;
}; }
var foo = 2;
return bar(); // returns 1
}
function f3(bar, foo) {
if (bar === void 0) { bar = foo; }
if (foo === void 0) { foo = 2; }
return bar;
}
function f4(foo, bar) {
if (bar === void 0) { bar = foo; }
return bar;
}
function f5(a) {
if (a === void 0) { a = a; }
return a;
}
function f6(async) {
if (async === void 0) { async = async; }
return async;
}
function f7(_a) {
var _b = foo, bar = _a[_b];
var foo = 2;
}
var Foo = /** @class */ (function () {
function Foo(x, y) {
if (x === void 0) { x = 12; }
if (y === void 0) { y = x; }
this.x = x;
this.y = y;
}
return Foo;
}());
function f8(foo1, bar) {
if (bar === void 0) { bar = foo1; }
}
|