function f1() { function f() { class C { constructor(public x: X, public y: Y) { } } return C; } let C = f(); let v = new C(10, "hello"); let x = v.x; let y = v.y; } function f2() { function f(x: X) { class C { public x = x; constructor(public y: Y) { } } return C; } let C = f(10); let v = new C("hello"); let x = v.x; let y = v.y; } function f3() { function f(x: X, y: Y) { class C { public x = x; public y = y; } return C; } let C = f(10, "hello"); let v = new C(); let x = v.x; let y = v.y; }