如何将TypeScript属性指向定义文件中的类对象?

时间:2013-09-04 07:38:56

标签: class static typescript

例如,假设我使用静态方法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)中找到它。

1 个答案:

答案 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,不是新实例 - 可以访问静态方法 - 但不是实例方法。