打字稿“不是模块”错误

DaR*_*oGa 5 javascript typescript angular

我有一个Angular2项目,我需要在其中输入要在我的打字稿中使用的javascript文件。

我在app / js / d3gantt.js中有一个javascript文件,其中包含的单个功能gantt = function()

gantt = function() {
    //Does lots of stuff
    return gantt;
};
Run Code Online (Sandbox Code Playgroud)

然后,在同一个文件夹中有一个名为d3gannt.d.ts的定义文件,如下所示:

declare module 'd3Gantt' {
    export module d3Gantt {
        export function gantt(): any;
    }
}
Run Code Online (Sandbox Code Playgroud)

然后我在我的组件中引用为 import * as d3Gantt from '../app/js/d3gantt';

但是,我收到错误消息,指出 File 'c:/Projects/RepackLog/RepackLog/RepackLog/app/js/d3gantt.d.ts' is not a module

我是否缺少一些必要的东西才能正常拾取我的文件?

谢谢,

Pri*_*l85 3

正如 @FabioAntunes 在上面的评论之一中提到的,您只需gantt在线导出 d3gantt.js 文件本身。确切的语法是

export gantt = function() {
    //Does lots of stuff
    return gantt;
};
Run Code Online (Sandbox Code Playgroud)

无需在其他地方声明它。有关导出模块的更多说明,请参阅这篇文章(Typescript es6 import module“文件不是模块错误”)。