我有一个模块,内容如下:
我希望通过默认导出导出所有这些信息,以便能够以下列方式访问它们:
import foo from './foo'
foo // this is the instance of the class
foo.Foo // the class
foo.Bar // the interface通过导出名称空间,我可以很容易地做到这一点,但是,为了支持常规的ES6导出语法,eslint禁止名称空间(据我所知,原因很充分)。
发布于 2020-07-02 19:27:46
我个人更喜欢命名导出,而不是默认导出,您可以通过使用这样的命名导出来实现类似的目标:
在你的[module].ts
class Foo {}
interface Bar {}
const instance = new Foo()
export { Foo, Bar, instance }在您要导入的文件中:
import * as foo from '[path to your module]'你可以这样用它:
class Dummy extends foo.Foo {}
class Car implements foo.Bar {}
console.log(foo.instance)您可以使用默认导出来导出对象,但这将不包括接口,因为接口是类型,不能用作在该对象内分配的值。所以你可以这样做:
export default {
instance,
Foo
}你可以这样用:
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 {}https://stackoverflow.com/questions/62703374
复制相似问题