首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过默认导出导出整个模块

通过默认导出导出整个模块
EN

Stack Overflow用户
提问于 2020-07-02 19:04:45
回答 1查看 46关注 0票数 0

我有一个模块,内容如下:

  • 类(称为Foo)
  • 接口(称为Bar)
  • 类的实例(无名称)

我希望通过默认导出导出所有这些信息,以便能够以下列方式访问它们:

代码语言:javascript
复制
import foo from './foo'

foo // this is the instance of the class
foo.Foo // the class
foo.Bar // the interface

通过导出名称空间,我可以很容易地做到这一点,但是,为了支持常规的ES6导出语法,eslint禁止名称空间(据我所知,原因很充分)。

EN

回答 1

Stack Overflow用户

发布于 2020-07-02 19:27:46

我个人更喜欢命名导出,而不是默认导出,您可以通过使用这样的命名导出来实现类似的目标:

在你的[module].ts

代码语言:javascript
复制
class Foo {}
interface Bar {}
const instance = new Foo()

export { Foo, Bar, instance }

在您要导入的文件中:

代码语言:javascript
复制
import * as foo from '[path to your module]'

你可以这样用它:

代码语言:javascript
复制
class Dummy extends foo.Foo {}
class Car implements foo.Bar {}
console.log(foo.instance)

您可以使用默认导出来导出对象,但这将不包括接口,因为接口是类型,不能用作在该对象内分配的值。所以你可以这样做:

代码语言:javascript
复制
export default {
  instance,
  Foo
}

你可以这样用:

代码语言:javascript
复制
import foo from '[path to module]'
class Dummy extends foo.Foo {}
console.log(foo.instance)
// no interface available so this won't work
class Car implements foo.Bar {}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62703374

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档