TypeScriptでクラスをネストする方法はありますか?たとえば、次のように使用したいと思います。
var foo = new Foo();
var bar = new Foo.Bar();
回答:
TypeScript 1.6以降、クラス式があります(参照)。
これは、次のことができることを意味します。
class Foo {
static Bar = class {
}
}
// works!
var foo = new Foo();
var bar = new Foo.Bar();
これは、クラス式を使用したより複雑なユースケースです。
これにより、内部クラスprivateが外部クラスのメンバーにアクセスできるようになります。
class classX {
private y: number = 0;
public getY(): number { return this.y; }
public utilities = new class {
constructor(public superThis: classX) {
}
public testSetOuterPrivate(target: number) {
this.superThis.y = target;
}
}(this);
}
const x1: classX = new classX();
alert(x1.getY());
x1.utilities.testSetOuterPrivate(4);
alert(x1.getY());