在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; }