目前我正在试图建立一个的OpenLayers打字稿定义文件。
问题是,在的OpenLayers有将转化为双方的模块和打字稿一类特定的类。
例如,有在Protocol
模块类OpenLayers
和还有一类Response
在模块OpenLayers.Protocol
。
我怎么能模式,在打字稿? 我可以Protocol
一类,并定义Response
类作为导出一个内部类? 你会如何去解决这个问题?
目前我正在试图建立一个的OpenLayers打字稿定义文件。
问题是,在的OpenLayers有将转化为双方的模块和打字稿一类特定的类。
例如,有在Protocol
模块类OpenLayers
和还有一类Response
在模块OpenLayers.Protocol
。
我怎么能模式,在打字稿? 我可以Protocol
一类,并定义Response
类作为导出一个内部类? 你会如何去解决这个问题?
声明Response
作为static
的字段Protocol
使用构造类型,返回一个interface
定义Response
类:
declare module OpenLayers {
export interface IProtocolResponse {
foo(): void;
}
export class Protocol {
static Response: new () => IProtocolResponse;
}
}
var response = new OpenLayers.Protocol.Response();
response.foo();
编辑:
或者像安德斯在指出这个讨论组的问题 ,你可以有这样的内部类多个构造函数:
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;