Class 同时输入脚本模块和类?
我目前正在尝试为OpenLayers构建一个TypeScript定义文件 问题是,在OpenLayers中,某些类会转换为模块和TypeScript中的类 例如,模块Class 同时输入脚本模块和类?,class,module,typescript,Class,Module,Typescript,我目前正在尝试为OpenLayers构建一个TypeScript定义文件 问题是,在OpenLayers中,某些类会转换为模块和TypeScript中的类 例如,模块OpenLayers中有Protocol类,模块OpenLayers.Protocol中有一个classResponse 我如何在TypeScript中建模?我是否可以将协议设为类,并将响应类定义为导出的内部类?您将如何着手解决该问题?以下是我最新的答案,我希望这对您有所帮助-它将帮助您开始定义OpenType: declare m
OpenLayers
中有Protocol
类,模块OpenLayers.Protocol
中有一个classResponse
我如何在TypeScript中建模?我是否可以将
协议
设为类,并将响应
类定义为导出的内部类?您将如何着手解决该问题?以下是我最新的答案,我希望这对您有所帮助-它将帮助您开始定义OpenType:
declare module OpenType {
export class Protocol {
constructor();
Request;
}
}
var x = new OpenType.Protocol();
var y = new x.Request();
var z = x.Request;
将
响应
声明为具有构造函数类型的协议
的静态
字段,返回定义响应
类的接口
:
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
派生类。遗憾的是,这两种解决方案都不可能。第一个是因为它不是我真正想要的,因为Protocol.Response应该包含类而不是它的实例。遗憾的是,第二个也不可能,因为我不能在OpenLayers中重命名类:(。我添加了第三次尝试,以查看这是否是您想要的。好的,问题是我正在构建TypeScript(来自Microsoft的类型化JavaScript)定义文件。它们实际上不是一个实现,而是一种接口声明。因此,遗憾的是,第三种解决方案也不起作用。啊-好的-所以你只想定义一个现有的JavaScript文件。事实上-你在问题中已经说过了,所以我很抱歉没有提到这一点!可能是重复的