// generic and non-generic interfaces with the same name do not merge interface A { foo: string; } interface A { // error bar: T; } module M { interface A { bar: T; } interface A { // error foo: string; } } module M2 { interface A { foo: string; } } module M2 { interface A { // ok, different declaration space than other M2 bar: T; } } module M3 { export interface A { foo: string; } } module M3 { export interface A { // error bar: T; } }