如何在打字稿中引用另一个模块?

时间:2018-01-09 21:01:29

标签: angularjs typescript jasmine typescript2.4

我在打字稿2.4.1中遇到importmodule的问题。我有两个文件:

testAdd.ts:

module mymodule {
    export class myClassAdd {
        static add(left: number, right: number): number {
            return left + right;
        }
    }
}

testCallAdd.ts:

//import 'someLibrary';

module mymodule {
    export class myClassCallAdd {
        static callAdd(): void {
            let result: number = mymodule.myClassAdd.add(3, 4); //error here
        }
    }
}

这段代码现在编译得很好。我发现如果我尝试使用import关键字导入某个库,我会开始出错。在testCallAdd.ts中,如果我在第一行取消注释导入,则会收到一条错误消息,指出mymodule类型 myClassAdd

我不明白为什么我会收到此错误或如何修复它。 import语句似乎正在做一些事情来防止编译器看到testAdd.ts。有人可以解释出了什么问题以及如何解决它吗?

这是因为我有一个工作正常的角度网站,但我想用茉莉花测试它。我无法弄清楚如何设置它以便角度块和单元测试都可以访问代码。

1 个答案:

答案 0 :(得分:1)

对于您的情况,您需要使用三重斜杠指令:/// <reference types="somelibrary" />

请参阅:http://www.typescriptlang.org/docs/handbook/triple-slash-directives.html

但是,最好建议使用模块系统,而不是名称空间(这就是你正在做的事情)。

您可以在此处了解有关模块和命名空间的更多信息: http://www.typescriptlang.org/docs/handbook/namespaces-and-modules.html

如果您确实打算使用命名空间,那么从TypeScript 1.5开始,语法module mymodule { ... }将被弃用并替换为namespace mymodule { ... }

http://www.typescriptlang.org/docs/handbook/namespaces.html https://github.com/unional/typescript-guidelines/blob/master/pages/default/namespaces-and-modules.md