原文: https://blog.oio.de/2014/03/21/inner-classes-typescript/
-----------------------------------------------------------------
In TypeScript, there is no exlicit concept like inner classes.
So what you cannot do in TypeScript is as follows:
1
2
3
4
5
6
|
class
Foo {
export
class
InnerFoo {
}
}
new
Foo.InnerFoo();
|
You can achieve something similar by merging a class with a module containing the inner class.
1
2
3
4
5
6
7
8
9
10
|
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:
1
2
3
4
5
6
7
8
9
10
11
|
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.