Typescript 库:隐藏内部导出

2023-12-23

我正在用 typescript 构建一个库,并通过 npm 发布。

在作为库的起点的index.ts中,所有公共类和枚举都被导出。

import { MyClass } from './internal/my-class'
import { MyEnum } from './internal/my-enum'
export { MyClass, MyEnum }

这很好用,但我注意到用户也可以通过使用文件的直接路径来导入内部函数/类等。

// in a project that installed my library as an npm dependency
import { InternalClass } from 'my-lib/dist/internal/internal-class'

有办法防止这种情况吗?

我需要“导出”InternalClass因为我在整个库中导入和使用它,但我不想公开暴露它。我尝试使用名称空间,但无法真正使其工作。


您应该设置stripInternal标记在你的tsconfig.json(或从命令行)到true并使用 tsdoc 注释@internal tag.

// internal/my_file.ts
/** @internal */
export function myInternalFunction() {}

请注意,这将从类型声明中删除该函数,因此它不会在编辑器中自动完成,但如果您确实需要隐藏内部详细信息,我建议您使用捆绑代码Rollup https://rollupjs.org/使用 TypeScript 插件。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Typescript 库:隐藏内部导出 的相关文章

  • 使用 karma-jasmine 和 istanbul 的 Typescript 代码覆盖率

    我正在尝试使用伊斯坦布尔在业力框架中获取我的打字稿代码的代码覆盖率 在 karma conf 中包含 typescript 文件 通过 karma typescript preprocessor 我们能够对 typescript 代码进行单
  • 从 HTML 表单发送数据到 Node.js 服务器

    我正在学习 Node js 我的服务器中有这个 var http require http var url require url http createServer function request response response w
  • Yeoman-Angular 生成的应用程序中缺少 Angular 脚本

    我已经使用 Yeoman Angular Generator 生成了一个应用程序 但项目中缺少 angular js 和其他 Angular 文件 我可以在 Bower json 文件中看到这些依赖项 如下所示 name mi portfo
  • angularjs 自定义过滤器检查数据数组内的值

    我有两个过滤器 它们根据数据中的队列键过滤数据 这是我的代码 var app angular module app app controller mainController function scope Data object scope
  • 将 FBX 文件转换为 .gltf 后,模型非常小,为什么?

    问题 将 FBX 文件转换为 gltf 后 模型非常小 为什么 我尝试用以下方法缩放模型frontObject scale set 1000 1000 1000 但我收到以下错误 TypeError Cannot read property
  • 过滤器返回 true 或 false

    我正在使用过滤器在 data it 返回对象中查找 id 它返回的对象不是 true 或 false 如果我怎样才能返回 true 或 falseval recoredId valueId var hasMatch data filter
  • 向下滚动时如何使图像移动?

    这是我想要实现的目标的示例 https www flambette com en https www flambette com en 我尝试过更改图像的 css 属性 但效果不能满足我的需求 我尝试过以下代码 mydocument on
  • Angular 7 Guard 重定向仅适用于双击

    问题是我已经实现了一个 Guard 旨在处理特定的目录 如果当前用户名的角色等于 2 它应该返回 true 如果没有 那么它不应该重定向 这是我的 app routing module ts 文件 问题出在 userlist 路径中 我们是
  • 模块路径格式错误...第一个路径元素中缺少点

    我有一个包含 2 个不同可执行文件的项目 每个可执行文件都有自己的依赖项以及对根的共享依赖项 如下所示 Root gt server gt main go gt someOtherFiles go gt go mod gt go sum g
  • React.js this.props.data.map() 不是一个函数

    我正在搞乱反应并尝试解析和渲染 json 对象 现在 我只是使用硬编码对象设置它以进行测试 而不是从 ajax 调用中获取它
  • 拖放图像上传在服务器上不起作用

    我正在尝试实现拖放图像上传 我在网上找到了一个相当简单的脚本并适合我的使用 在我的本地安装中 文件上传得很好 但在服务器上却不行 从我的调试尝试来看 SERVER HTTP X FILENAME 甚至没有被 php 设置 我尝试了以下方法
  • jQuery 问题:它的真正含义是什么?

    function window undefined jquery code jQuery window 它到底意味着什么 是不是也意味着 document ready 或者只是两种不同的东西 已经有两个答案 但这是我对代码缺失端的猜测 fu
  • 表单提交不起作用

    我有一张桌子 可以打印出所有可用的相机 它使用表单来更改这些设置 问题在于该表单仅更新条目中的最后一个摄像机 换句话说 如果我更改表单并为列表中的最后一个摄像机点击 应用 它将起作用 如果我更改此列表中任何其他摄像机的表单 它会将其更改为与
  • jQuery 面板滑块通过单击按钮打开但不会关闭

    我的页面上有一个按钮 可以使用 jquery 和 Modernizr 框架打开右侧面板 按钮位于屏幕最右侧 单击时 它会向左滑动并打开打开的面板 问题是 再次单击时它不会滑回到原来的位置 HTML div class cd panel fr
  • 自动调整元素 (div) 大小以适合水平内容

    我尝试谷歌搜索 但没有得到太多结果 我正在构建一个水平轮播 它在浮动的 LI 中显示图像 我想解决的问题是 每次我向轮播添加缩略图 我是延迟加载 时 我都需要重新计算轮播的宽度 以便所有浮动缩略图很好地并排排列 其一 我宁愿不必在 JS 中
  • 当元素具有多个类时如何在 switch 语句中检查 className

    在下面的示例中 我只想单击该选项以在警报中显示 我正在尝试使用 switch 语句来确定单击了哪个类 如果我的 div 不包含多个类 则我的示例将有效 我尝试使用classList contains在我的 switch 语句中无济于事 有没
  • NodeJS 中的缩进多行日志记录

    我要打印JSON stringify d 反对控制台 将上下文作为 Mocha 测试套件输出的一部分 当测试缩进时 我希望对象日志行向右缩进足够远 例如 3 4 个制表符空格 以便它们可以识别地位于右侧describe group 我怎样才
  • Javascript/DOM:如何删除 DOM 对象的所有事件侦听器?

    只是问题 有没有办法完全删除对象的所有事件 例如一个div 编辑 我添加每div addEventListener click eventReturner false 一个事件 function eventReturner return f
  • 当 jQuery .remove() 用于删除脚本标签时,它是否会清除加载的 JavaScript?

    正如标题所示 如果我使用以下命令从 DOM 中删除脚本标签 scriptid remove javascript 本身是保留在内存中还是被清除了 或者 我完全误解了浏览器处理 javascript 的方式吗 这是很有可能的 对于那些对我提问
  • 通过jquery ajax()和serialize()提交html表单

    我想通过 jquery ajax 提交此表单 这是我所做的 但它不起作用 即表单正在提交并刷新页面 但我没有看到响应 即在同一页面上打印数组 HTML

随机推荐

  • htaccess如何将子目录重定向到外部URL

    I tried 301 Redirect Old File Redirect 301 www mydomain com subdirectory http newurl com 但这让我进入了 newurl com subdirectory
  • Android 2.3 中出现“无对等证书”错误,但 4 中则没有

    得到 javax net ssl SSLPeerUnverifiedException No peer certificate error 在运行 Android 2 3 的模拟器中 但在 4 中则不然 在 4 中 它运行得很好 我正在尝试
  • varchar 的 DbString、IsFixedLength 和 IsAnsi

    我是 Dapper 的新手 想知道为什么当我的代码在没有它的情况下运行时会出现以下建议 Ansi 字符串和 varchar https github com StackExchange Dapper ansi strings and var
  • MBCS 编码未知

    我正在尝试在 Python 中打开带有 MBCS 编码的文件 但出现错误 如果我写 fileIN open filename r encoding mbcs I get Traceback most recent call last Fil
  • 安装.NET Core Runtime和SDK后需要重启吗?

    我们即将在生产环境中部署 netcore 2 0 应用程序 但我们需要首先安装 NET Core 运行时和 SDK 安装是否需要重启才能生效 既然是生产 我们不希望这种情况发生 我们安装了以下内容here https www microso
  • RAII 和系统资源清理

    RAII 是资源清理的一个很好的解决方案 然而 RAII 基于堆栈展开 如果进程异常终止 堆栈将不会被展开 这意味着 RAII 在这种情况下不起作用 对于进程生命周期的资源来说 这没什么好担心的 但是对于文件系统生命周期或者内核生命周期的资
  • 原则上,Android 设备是否可以通过蓝牙/GameKit 与 iPhone 连接?

    我对纯理论不感兴趣 但作为近期或中期的实际可能性 比如 12 24 个月内 作为一名熟悉 但不专门研究 两个主要智能手机平台的开发人员 我是否应该期望 Android 库的出现 它可以将自己欺骗到 iPhone 应用程序基于 GameKit
  • Spring mockMvc 在我的测试中不考虑验证

    我正在尝试使用mockMvc 设置集成测试 但遇到了问题 事实上 spring没有集成任何验证注解 为了更精确 我放置了可以测试的 Controller 类的代码 Controller public class UserRegisterCo
  • 带有外部更新的 NHibernate 二级缓存

    我有一个 99 只读的 Web 应用程序 有一个单独的服务以特定的时间间隔 例如每 10 分钟 更新数据库 该服务如何告诉应用程序使其二级缓存失效 它真的重要吗 我实际上并不关心我是否有太多过时的数据 如果我不使缓存失效 记录需要多长时间才
  • FBSDK 的 LLDB 问题,每当我放置断点时,我都会收到错误,并且无法打印任何变量

    每当我设置断点并尝试访问任何变量时 我都会收到此错误 如果我尝试在控制台中打印变量 则会收到以下错误 lldb p someVar error Error in auto import failed to get module Jogabo
  • 维护多个设置文件

    目前 我有一个包含各种单选按钮 目录浏览器 日期选择器等的表单 应用程序使用这些设置 并执行文件删除任务 我想知道将这些设置保存到可以稍后加载的外部文件的最佳策略是什么 因此基本上每个配置都可以被加载 执行 然后加载另一个配置 此外 配置可
  • Angular 2 Http 重试时间

    我正在尝试使用retryWhen在 HTTP 调用中 当尝试像这样使用时它工作得很好 return this http get environment apiUrl track this user instance id this curr
  • org.hibernate.event.def.EventCache 不支持 null 实体是什么意思?

    我在尝试保存实体时收到错误 我仅在启动服务器时收到此错误 而不是在使用 dbunit 运行单元测试时收到此错误 我正在努力拯救一个协会 我的单元测试应该与我在手动测试时遇到的情况完全相同 我正在关系的一端添加一个新实体 其中之前不存在任何关
  • 在 PowerPoint 中通过占位符名称处理形状

    我正在尝试创建一个函数 该函数将返回特定的形状 基于known分配给的名称属性CustomLayout Shapes Placeholder目的 我无法使用该形状 Name因为即使从模板 布局创建幻灯片时 这也是事先未知的 挑战似乎是自定义
  • 如何取消nuke pyside中的字体阴影

    I have a UI which automatically sets font shadow in nuke and how to cancel it I want the font on this button to look lik
  • git-svn:重置 master 的跟踪

    我在用着git svn使用 SVN 存储库 我的工作副本是使用创建的git svn clone s http foo bar myproject这样我的工作副本就遵循 SVN 的默认目录方案 主干 标签 分支 最近我一直在研究一个使用创建的
  • 动态选项卡中的动态内容(Angular、UI Bootstrap)

    我想在使用 AngularJs 和 UI Bootstrap 动态生成的选项卡的内容中使用 ng include 我这里有一个 Plunker http plnkr co edit 2mpbovsu2eDrUdu8t7SM p previe
  • 在 IIS 上运行时 GoogleWebAuthorizationBroker 将无法打开浏览器

    我有一个在 IIS 8 上运行的 Web 应用程序 这个 Web 应用程序 仅在本地运行 我们将其用作通过其打开的桌面应用程序Google Chrome 我正在尝试将视频上传到YouTube通过他们的 API 基本上我的问题就在这里 uc
  • Flutter:浮动操作按钮固定位置

    我有以下代码 return Scaffold appBar AppBar title Text Sample Code body ListView padding const EdgeInsets all 20 0 children
  • Typescript 库:隐藏内部导出

    我正在用 typescript 构建一个库 并通过 npm 发布 在作为库的起点的index ts中 所有公共类和枚举都被导出 import MyClass from internal my class import MyEnum from