Class 同时输入脚本模块和类?

Class 同时输入脚本模块和类?,class,module,typescript,Class,Module,Typescript,我目前正在尝试为OpenLayers构建一个TypeScript定义文件 问题是,在OpenLayers中,某些类会转换为模块和TypeScript中的类 例如,模块OpenLayers中有Protocol类,模块OpenLayers.Protocol中有一个classResponse 我如何在TypeScript中建模?我是否可以将协议设为类,并将响应类定义为导出的内部类?您将如何着手解决该问题?以下是我最新的答案,我希望这对您有所帮助-它将帮助您开始定义OpenType: declare m

我目前正在尝试为OpenLayers构建一个TypeScript定义文件

问题是,在OpenLayers中,某些类会转换为模块和TypeScript中的类

例如,模块
OpenLayers
中有
Protocol
类,模块
OpenLayers.Protocol
中有一个class
Response


我如何在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文件。事实上-你在问题中已经说过了,所以我很抱歉没有提到这一点!可能是重复的