CommonJs isn't needed. Wrap all typescript in a common namespace and then export other namespaces, class, etc. Does offer intellisense:
MyClass1.ts
namespace GlobalNamespace {
export class MyClass1 {
prop1:string;
}
}
MyClass2.ts
namespace GlobalNamespace {
export class MyClass2 {
prop2:string;
}
}
Divide into namespace units:
SubClasses.ts
namespace GlobalNamespace {
export namespace SubNamespace1 {
export class SubClass1 {
myClass1: MyClass1;
}
}
}
namespace GlobalNamespace {
export namespace SubNamespace2 {
export class SubClass2 {
subClass1:SubNamespace1.SubClass1;
}
}
}
Instantiate SubClass2
var subClass2 = new GlobalNamespace.SubNamespace2.SubClass2();