我目前正在尝试为 OpenLayers 构建一个 TypeScript 定义文件。
问题在于,在 OpenLayers 中,某些类可以同时转换为 TypeScript 中的模块和类。
例如Protocol,模块中有类,模块OpenLayers中有类。ResponseOpenLayers.Protocol
我怎么能在 TypeScript 中建模呢?我可以创建Protocol一个类并将该类定义Response为导出的内部类吗?你将如何解决这个问题?
我目前正在尝试为 OpenLayers 构建一个 TypeScript 定义文件。
问题在于,在 OpenLayers 中,某些类可以同时转换为 TypeScript 中的模块和类。
例如Protocol,模块中有类,模块OpenLayers中有类。ResponseOpenLayers.Protocol
我怎么能在 TypeScript 中建模呢?我可以创建Protocol一个类并将该类定义Response为导出的内部类吗?你将如何解决这个问题?
声明Response为具有构造函数类型的static字段,返回定义类的一个:ProtocolinterfaceResponse
declare module OpenLayers {
export interface IProtocolResponse {
foo(): void;
}
export class Protocol {
static Response: new () => IProtocolResponse;
}
}
var response = new OpenLayers.Protocol.Response();
response.foo();
编辑:
或者正如 Anders 在此讨论列表问题中指出的那样,您可以通过这种方式为内部类创建多个构造函数:
declare module OpenLayers {
export interface IProtocolResponse {
foo(): void;
}
export class Protocol {
static Response: {
new (): IProtocolResponse;
new (string): IProtocolResponse;
};
}
}
var response = new OpenLayers.Protocol.Response('bar');
response.foo();
这两种方法的主要缺点是您不能从OpenLayers.Protocol.Response.
这是我更新的答案,希望对您有所帮助 - 它应该让您开始定义 OpenType:
declare module OpenType {
export class Protocol {
constructor();
Request;
}
}
var x = new OpenType.Protocol();
var y = new x.Request();
var z = x.Request;