例如,假设我使用静态方法Foo
的课程bar
。然后,我有一个类Baz
,其静态属性为Qux
,我希望指向类对象Foo
,如下所示:
// foo.d.ts
declare class Foo {
static bar(name: string): void;
}
declare class Baz {
static Qux = Foo;
}
在我的实现中,我想这样使用它:
// bar.ts
/// <reference path="foo.d.ts" />
Baz.Qux.bar('hello');
请参阅,我希望Qux
指向类对象本身,这样我就可以访问其静态方法而无需实例化它的实例。但是,这样做会给我一个错误,说“在环境上下文中不允许初始化器”,因为我在定义文件中。
在TypeScript定义文件中是否有这样做的语法?我无法在规范(pdf)中找到它。
答案 0 :(得分:2)
因为您实际上希望Qux
本身是Foo
而不是Foo
的实例,所以您需要使用:
declare class Foo {
static bar(name: string): void;
}
declare class Baz {
static Qux: typeof Foo;
}
Baz.Qux.bar('hello');
说明:
static Qux: Foo;
Qux
将是new Foo()
,无法访问静态方法。
相反:
static Qux: typeof Foo;
Qux
本身是Foo
,不是新实例 - 可以访问静态方法 - 但不是实例方法。