我有这种用JavaScript编写的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中重新实现这样的接口。
更新
根据@toskv的建议,我添加了以下界面:
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.
。
知道为什么吗?
答案 0 :(得分:3)
描述该代码的TypeScript接口将是:
interface MainIf {
(options) : string ; // the main function
methodName() : any;
propertyName: number;
objectName: Object;
}