typescript - 如何键入将在 TypeScript 中使用命名导入导入的未知导出?
问题描述
我正在制作一个 NPM 包,它可以转换process.env
和导出转换后的 env 以方便使用。
模块:
const transformedEnv = transform(process.env)
module.exports = transformedEnv
使用它(在 Babel / TS 代码库中):
import { SOME_ENV_VAR } from 'transform-env'
我的模块按预期工作,但我想提供一个 TypeScript 定义。
问题是我不知道 env 将具有哪些属性,所以我不能使用命名导出,也找不到输入“未知”导出的方法。我目前收到以下 TS2305 错误,这是完全有道理的,因为我不使用命名导出导出任何内容:
error TS2305: Module '"transform-env"' has no exported member 'SOME_ENV_VAR'.
有没有办法输入那些未知的命名导出(比如*
在导出中使用 a ?)。
如果没有,有没有办法在包端绕过这个错误,而不是@ts-ignore
在消费者模块端使用 a ?
解决方案
index.d.ts
通过在我的包的文件旁边添加一个,我已经能够完全绕过我的模块的类型检查index.js
,其中包含:
declare module 'transform-env'
这绝对不理想,我宁愿有真正的类型定义,但至少消费者项目可以在import { SOME_ENV_VAR } from 'transform-env'
没有 TypeScript 阻塞编译的情况下使用。
仍在寻找更好的解决方案。
推荐阅读
- reactjs - React-Redux:可视化元素数组
- python-3.x - Apple Script:如何将用户输入保存到文本文件
- csv - 如何将变量保存到现有 CSV 文件的最后一行
- spring - 多个 Mono 和普通订户
- javascript - Javascript在反应中解构数据
- html - 将图像数据添加到 http 消息正文
- python - 如何点击 Instagram 上的关注按钮?
- python - 如何用 python2.7 调用 python3.6?
- kotlin - 为什么 Intellij 不为新的 kotlin 项目创建 build.gradle.kts?
- ecmascript-6 - 为什么我可以在导出模块中声明之前访问 const