首页 > 解决方案 > 我应该如何从一个包中导出多组类/接口

问题描述

我有一个打字稿包,其中有 2 组类/接口:writeAPI 和 readAPI。两个 API 都有同名的类,例如有一个可写的“节点”和一个可读的“节点”。

我想防止在类的名称中添加组,例如:'WritableNode','ReadableNode'。

是否可以创建一个可以被另一个包使用的包,如下所示:1)

import * as myAPIs from "myAPIs"

const readableNode = new myAPIs.readable.Node()
const writableNode = new myAPIs.writable.Node()

或者(不太喜欢):2)

import * as myReadableAPI from "myAPIs/readable"
import * as myWritableAPI from "myAPIs/writable"

const readableNode = new myReadableAPIs.Node()
const writableNode = new myWritableAPIs.Node()

编辑:

这似乎有效(专门针对我的包裹):

import * as myReadableAPI from "myAPIs/dist/src/readable

我觉得它又丑又长,我想去掉多余的目录。我更喜欢上面的第一个选项。

标签: typescriptmodulenamespaces

解决方案


在(最好)两个文件中声明您的 api,/readable.ts并将/writeable.ts它们重新导出到/apiEntry.ts您想要的命名空间下的文件中。

import * as _writable from "./writeable"
import * as _readable from "./readable"


export const writeable = _writable
export const readable = _readable

是的,这看起来有点脏,将你的模块重新声明为常量,但语法export * as namespace from "./module"不起作用。无论如何,我相信像 terser 这样的缩小器可以解决这个问题。

沙盒


推荐阅读