我目前正在嘗試爲OpenLayers構建TypeScript定義文件。TypeScript模塊和類同時?
的問題是,在的OpenLayers有將轉化爲雙方的模塊和打字稿一類特定的類。
例如,模塊OpenLayers
中有Protocol
類,模塊OpenLayers.Protocol
中有Response
類。
我怎麼能模式,在打字稿?我可以讓Protocol
爲類,並將Response
類定義爲導出的內部類嗎?你將如何去解決這個問題?
我目前正在嘗試爲OpenLayers構建TypeScript定義文件。TypeScript模塊和類同時?
的問題是,在的OpenLayers有將轉化爲雙方的模塊和打字稿一類特定的類。
例如,模塊OpenLayers
中有Protocol
類,模塊OpenLayers.Protocol
中有Response
類。
我怎麼能模式,在打字稿?我可以讓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;
聲明Response
爲Protocol
使用構造類型static
場,返回一個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();
編輯:
或者像安德斯在this discussion list question指出,你可以有這樣的內部類多個構造函數:
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
派生類。
的可能的複製[任何方式來聲明在打字原稿巢類結構?](http://stackoverflow.com/questions/13495107/any-way-to-declare-a-nest-class-structure-in-打字稿) – Alex