将 TypeScript 命名空间替换为 ES2015 模块



我最近重新配置了我的打字稿设置,现在我收到通过规则无命名空间引起的错误。

我目前对命名空间的设置如下:

导出某些内容的类:

namespace MyNamespace {
export class Foo {}
export class Bar {}
}

导入的类:

import MyNamespace from './my-namespace';
// access classes
MyNamespace.Foo;
MyNamespace.Bar;

我想用推荐的ES2015模块替换此设置(我不想简单地禁用该规则(。我该怎么做?理想情况下,我想保留我当前的导入语法,我不是特别喜欢语法import {Foo, Bar} from './my-namespace'

这是官方答案。

在您的示例中,您可以将命名空间替换为如下所示的模块:

  1. 删除命名空间语法:
//namespace MyNamespace {   <-- remove this line
export class Foo {}
export class Bar {}
//}                         <-- remove this line
  1. 在需要类型的文件中,使用命名导入:
import * as MyNamespace from './my-namespace';
// access classes
MyNamespace.Foo;
MyNamespace.Bar;

如果要为导入设置命名空间,请使用导入语法* as ...

export class Foo {}
export class Bar {}
import * as MyNamespace from './my-namespace';
// access classes
MyNamespace.Foo;
MyNamespace.Bar;

如果你使用的是export,你可以按照@cyr_x提到的去做sth。只是想指出使用export default也可以使用命名空间。

export {default as YourCustomisedName} from '<your file path>'

最新更新