在TypeScript中声明JavaScript扩展函数

我有用JavaScript编写的这种types的Node.js模块:

function main(options) { return "some string"; } main.methodName = function () { // implementation; }; main.objectName = { // a namespace; }; main.propertyName = 123; module.exports = main; 

在TypeScript中声明这样一个接口的正确方法是什么?

澄清

我正在问如何在TypeScript中为现有的Node.js模块正确声明这样一个接口,所以它可以在TypeScript文件中正确使用,而不是如何在TypeScript中重新实现这样的接口。

UPDATE

根据@toskv的build议,我添加了以下界面:

 declare module "my-module" { // Default library interface interface main { (options?:{}):string, methodName():any, propertyName:any, objectName:Object } export default main; } 

但是如果我这样使用它:

 import * as myModule from "my-module"; var s = myModule({}); 

然后我得到错误Cannot invoke an expression whose type lacks a call signature.

任何想法为什么?

描述该代码的TypeScript接口是:

 interface MainIf { (options) : string ; // the main function methodName() : any; propertyName: number; objectName: Object; }