 <p>You used the [typescript] tag here, so I am going to assume you are using typescript.</p> <p>Make this a 1-way street. Kill off the circular dependency. I would probably move this into 1 file, but you can still split it up like this.</p> <p><strong>a.ts</strong> (just an interface)</p> <pre><code>export interface A { name: string; new (name: string); } </code></pre> <p><strong>b.ts</strong> (implementation)</p> <pre><code>import { A } from 'a'; export class B implements A { /*...*/ } </code></pre>