有没有一种方法可以在TypeScript中嵌套类。例如,我想像这样使用它们:
var foo = new Foo();
var bar = new Foo.Bar();
Answers:
从TypeScript 1.6开始,我们有了类表达式(reference)。
这意味着您可以执行以下操作:
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());
我无法在不接收编译错误的情况下将其与导出的类一起使用,而是使用了命名空间:
namespace MyNamespace {
export class Foo { }
}
namespace MyNamespace.Foo {
export class Bar { }
}