首页 > 解决方案 > 使用命名空间来避免从每个文件中导入

问题描述

根据这篇文章,您可以使用 TypeScript 命名空间来导入类型/接口而不包括导入:

https://scotch.io/tutorials/3-useful-typescript-tips-for-angular

但是,如果我创建一个命名空间:

export namespace ST {

  export interface Ifoo {

  }
}

为了让它被识别,我必须像这样导入它:

import {ST} from 'suman-types/dts/foo';

export const foo : ST.Ifoo = function () {

};

有什么我做错了吗?如何使用命名空间轻松导入代码?

也许这仅适用于 Angular 而不适用于 CommonJS/Node.js?不知道为什么不。

标签: typescripttsctypescript-namespace

解决方案


正如您所指的页面上所提到的,这实际上并不只绑定到 Angular。

我第一眼看到的是您export与命名空间本身一起使用。

export namespace ST {
      export interface Ifoo { }
}

scotch.io 上的示例说您应该仅将 export 与嵌套接口一起使用。像这样:

namespace ST {
      export interface Ifoo { }
}

这应该可以解决问题。那么就不需要进一步了import。您应该能够在整个应用程序中使用命名空间,而无需任何进一步的输入语句。


推荐阅读