1

例如,假设我有Foo带有静态方法的类bar。然后,我有一个Baz具有静态属性的类Qux,我想指向类 object 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)中找到它。

4

1 回答 1

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;

QuxFoo它本身,而不是一个新的实例——静态方法是可访问的——但不是实例方法。

于 2013-09-04T08:20:19.993 回答