I use AMD modules and I want to hide a complex interface behind one file that loads several other files and chooses what to expose and how. It works, I use this solution but it feels kinda ugly, mostly with the interfaces. import Types = require('./message-types'); import MessageBaseImport = require('./message-base'); export interface IMessage extends Types.IMessage {} // This is an interface expo