导出打字稿功能"缺少呼号"

Joe*_*oel 3 typescript

我在"main.ts"中有一个打字稿外部模块,它只导出一个以这种方式编写的函数:

// ...
import O = require('./Options');

"use strict";

function listenRestRoutes(expressApp: any, options?: O.IOptions) {
    // ...
}
module.exports = listenRestRoutes;
Run Code Online (Sandbox Code Playgroud)

这个汇编得很好.我有另一个文件,导入此模块:

// ...
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);
Run Code Online (Sandbox Code Playgroud)

最后一行不编译,说错误TS2088:无法调用类型缺少调用签名的表达式.mipod(app,opts);

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

PS:我还尝试在第二个文件的顶部添加引用:

/// <reference path="./main.ts" />
Run Code Online (Sandbox Code Playgroud)

但它没有改变任何东西.

Rya*_*ugh 6

TypeScript不解析module.exports类型信息的分配.而不是这一行:

module.exports = listenRestRoutes;
Run Code Online (Sandbox Code Playgroud)

用这个

export = listenRestRoute;
Run Code Online (Sandbox Code Playgroud)

  • 哦,男人甚至没有正确的es2015语法`export default listenRestRoutes`工作 - 太笨了! (2认同)