如何导入从模块导出的类?

时间:2019-06-12 14:49:44

标签: typescript

我在我的角度项目中有正在使用的打字稿文件(生成)。

此文件 contracts.ts 的内容如下:

export module A.B.C.Models {
  export class Activity {
    prop1: number;
    ...
  }
}

我试图在同一文件夹中的另一个文件中使用这些类,但是我不知道如何正确地导入这些类,并且我还想对太长的模块名称起别名。

import { Activity } from './contracts';

该代码未按照以下错误进行编译:

  

找不到模块“合同”

每次数据库模型更改时,我都无法修改生成的文件。

任何帮助表示赞赏。 预先感谢。

1 个答案:

答案 0 :(得分:2)

您正在使用一种称为内部模块或名称空间的旧打字稿功能(export module A.B.C.Modelsexport namespace A.B.C.Models相同)。您可以像这样导入和使用该类:

import * as c from './contracts'

c.A.B.C.Models.Activity

我还是建议反对。不建议混合使用JS模块和名称空间。请参阅this discussion上的主题:

  

命名空间可能永远不会消失,同时,您可能不应该使用它们,因为通过使用模块可以存在更好,更标准和现代的模式。如果您认为自己需要使用命名空间的代码,则可以使用更多名称空间,而大多数情况下则不需要,因为我们现在为大型JS建议使用不同的概念组织模型(模块)。

直接导出该类,您将可以使用import语法使用它:

//contacts.ts
export class Activity {
  prop1: number;
   ...
}
//usage.ts
import { Activity } from './contracts';