【问题标题】:How should I export multiple groups of classes/interfaces from a package我应该如何从一个包中导出多组类/接口
【发布时间】:2020-09-03 21:59:09
【问题描述】:

我有一个打字稿包,其中有 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

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

【问题讨论】:

    标签: typescript module namespaces


    【解决方案1】:

    在(最好)两个文件 /readable.ts/writeable.ts 中声明您的 api,然后在您想要的命名空间下的 /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 这样的缩小器可以解决这个问题。

    Sandbox

    【讨论】:

    • 谢谢!我已经对其进行了测试,它适用于类和函数。但是对于类型和接口,它不起作用。
    • @Coen 使用export type nameOfType = _nameOfType
    • 我不知道怎么做。我已经在模块中这样做了,我不能在模块之外这样做,因为那样会与其他模块/组的接口/类型冲突
    【解决方案2】:

    与@MaximilianMairinger 写的相反,export * as myNamespace from "./module" 实际上对我有用。

    【讨论】:

      猜你喜欢
      • 2021-11-02
      • 1970-01-01
      • 2011-11-27
      • 1970-01-01
      • 2022-09-25
      • 2023-03-08
      • 2019-12-07
      • 1970-01-01
      • 2017-03-13
      相关资源
      最近更新 更多