在TypeScript中声明模块与引号与不引用之间的区别是什么?

时间:2015-09-11 17:21:29

标签: typescript

我是编写TypeScript定义文件的开始,想知道以下两个结构之间的区别:

declare module activedirectory

declare module "activedirectory"

由于某种原因,前者允许我在我的一个Angular服务中使用任何类而没有任何类型的导入声明(例如import activedirectory = require('activedirectory')。每当我在我的代码中声明后者时,它会破坏对我内部的引用模块,例如:

module myModule.Services {
    'use strict';

    export class MyService implements myModule.Interfaces.IMyService {
    .....

无法再找到“myModule.Interfaces”命名空间。

1 个答案:

答案 0 :(得分:9)

TypeScript团队认识到这种混淆,这就是为什么没有引号的模块现在称为名称空间。

  

展望未来,内部模块将被称为“命名空间”。我们选择使用这个术语是因为这种形式的工作方式与其他语言的名称空间之间的密切关系[...]   http://blogs.msdn.com/b/typescript/archive/2015/07/20/announcing-typescript-1-5.aspx

引用的模块是ES6模块,需要使用import 'activedirectory';

之类的导入语句导入