//@module: amd export class A{ constructor( public callback: (self: A) => void) { var child = new B(this); } AAA( callback: (self: A) => void) { var child = new B(this); } } export interface C{ child: B; (self: C): void; new(callback: (self: C) => void) } export class B { constructor(public parent: T2) { } }