导出打字稿功能"lacks a call signature"



我在"main.ts"中有一个typescript外部模块,它只导出一个函数,是这样写的:

// ...
import O = require('./Options');
"use strict";
function listenRestRoutes(expressApp: any, options?: O.IOptions) {
    // ...
}
module.exports = listenRestRoutes;

这个编译得很好。我有另一个文件,这个模块是在这里导入的:

// ...
import express = require('express');
import mipod = require('./main');
import O = require('./Options');
// ...
var app = express();
var opts: O.IOptions = O.Options.default();
// ...
mipod(app, opts);

最后一行没有编译,表示错误TS2088:无法调用类型缺少调用签名的表达式。mipod(应用程序,opts)

我不明白我为什么会犯这个错误。尽管有这个错误,javascript还是正确生成并运行良好。那么,这是编译器错误,还是我的代码中有错误?

附言:我还试图在第二个文件的顶部添加参考:

/// <reference path="./main.ts" />

但这并没有改变任何事情。

TypeScript不解析类型信息的module.exports赋值。代替这行:

module.exports = listenRestRoutes;

使用此

export = listenRestRoute;

相关内容

最新更新