以下产生有效的工作ES5但发出以下错误.我正在使用Typescript 1.7.5,我想我已经阅读了整个语言规范,我无法弄清楚为什么会产生这个错误.
error TS2349: Cannot invoke an expression whose type lacks a call signature.
Run Code Online (Sandbox Code Playgroud)
a.js(默认导出的ES5环境模块)
function myfunc() {
return "hello";
}
module.exports = myfunc;
Run Code Online (Sandbox Code Playgroud)
ADTS
declare module "test" {
export default function (): string;
}
Run Code Online (Sandbox Code Playgroud)
b.ts
import test = require("test");
const app = test();
Run Code Online (Sandbox Code Playgroud)
b.js(生成的ES5):
var test = require("test");
var app = test()
Run Code Online (Sandbox Code Playgroud) DefinitelyTyped库:
declare module "history/lib/createBrowserHistory"
{
export default function createBrowserHistory(options?: HistoryModule.HistoryOptions): HistoryModule.History
}
Run Code Online (Sandbox Code Playgroud)
当像这样使用时,在标题中给出编译错误(虽然它在转换为.tsx之前在普通的旧.jsx中工作):
import React = require('react');
import reactDom = require('react-dom');
import ReactRouter = require('react-router');
import createBrowserHistory = require('history/lib/createBrowserHistory');
import routes = require('app/tools/routes');
export function createReactApp() : void
{
let history = createBrowserHistory(); // <-- error :(
reactDom.render
(
<ReactRouter.Router history={history}>{routes}</ReactRouter.Router>,
document.getElementById('app')
);
}
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?