考虑以下模块:
export class Bar { generateFoo() { return new Foo(1); } } class Foo { constructor(fooValue) { this.fooValue = fooValue; } doFoo() { console.log(this.fooValue); } }
我应该出口吗 Foo 在任何情况下也是?为什么?
Foo
从模块中导出某些内容的唯一原因是希望外部的代码能够直接调用或引用它。如果你想让你的客户 Foo 对象是通过调用 bar.generateFoo() ,那么就没有理由出口了 . 在Javascript中,您可以完全引用所有 福
bar.generateFoo()
福
福 new Foo(someValue) ,则需要导出 福
new Foo(someValue)
导出类就是导出构造函数。因此,如果希望有人能够直接调用构造函数(例如,使用 new Foo() ). 如果它们不需要直接调用构造函数,那么就不需要导出它。
new Foo()