Inner Classes with TypeScript

In TypeScript, there is no exlicit concept like inner classes.
So what you cannot do in TypeScript is as follows:

class Foo {
  export class InnerFoo {
  }
}

new Foo.InnerFoo();

You can achieve something similar by merging a class with a module containing the inner class.

class Foo {
}

module Foo {
    export class InnerFoo {
      doIt(){}
    }
}

new Foo.InnerFoo();

The merging happens implicitely by using the same name for the class and the module.

Of course you can use the inner class in the outer class:

class Foo {
    doSomethingWithInnerFoo() {
        new Foo.InnerFoo().doIt();
    }
}

module Foo {
    export class InnerFoo { doIt(){} }
}

new Foo().doSomethingWithInnerFoo();

The only downside here is that the inner class must be exported, so it is always visible to the outside – there are no private inner classes.

Short URL for this post: http://wp.me/p4nxik-20l
This entry was posted in Web as a Platform and tagged , , , . Bookmark the permalink.

One Response to Inner Classes with TypeScript

  1. Pingback: Declaration Merging with TypeScript | techscouting through the java newstechscouting through the java news

Leave a Reply