类模块声明文件(TypeScript)

我使用一个节点模块,这是找不到的types,并不存在definelytyped。

模块的基本使用是:

import * as SomeClass from 'some-module'; var someObject = new SomeClass("some string"); someObject.someMethod(); 

正如你所看到的,这个模块导出一个类作为它的默认值。 我还没有想出如何编写它的声明文件。

这是我设法做的最好的:

 declare module 'some-module' { export default class SomeClass { constructor (someArg: string); someMethod(): void; } } 

顺便说一句,它确实工作JavaScriptly。 只有TypeScript困扰我。

任何想法如何解决?

对于声明,你需要这样做:

 declare module 'some-module' { class SomeClass { constructor (someArg: string); someMethod(): void; } namespace SomeClass {} export = SomeClass; } 

更新:感谢Blake Embrey指出,hack namespace SomeClass {}是需要得到这个工作。 有关更多详细信息,请参阅https://github.com/Microsoft/TypeScript/issues/5073

如果你只是想避免TypeScript错误,不要担心ItelliSense只是在你的文件开始时声明你的类库,例如:

 declare var SomeClass: any;