typescript - 当没有为该单个值定义类型时,如何从库中导入
问题描述
我正在开发一个使用 react-spring 的组件库的项目。我无法控制组件库,因此我无法控制它使用 react-spring v8 的事实
我在 PR 上找到了一条评论,告诉我在测试环境中运行时如何修复动画。它需要我导入Globals
对象。当我尝试这样做时,import { Globals }
我收到错误消息Module '"react-spring"' has no exported member 'Globals'.ts(2305)
,因为我的项目正在使用 Typescript(其中的说明适用于 JS)
当我查看我的 node_modules 目录中 react-spring 的代码时,我可以看到该Globals
对象肯定是在主代码和模块代码中导出的。
web.js(主要):
export { apply, config, update, extendedAnimated as animated, extendedAnimated as a, interpolate$1 as interpolate, Globals, useSpring, useTrail, useTransition, useChain, useSprings };
web.cjs.js(模块):
exports.Globals = Globals;
但是,当我查看react-spring 提供的类型时,什么都没有Globals
,我担心这是导致我无法导入 Globals 的原因,以便我可以在测试期间按照指示提供模拟 requestAnimationFrame。
我对 Typescript 很陌生,所以我可能误解了一些东西,我已经尝试用谷歌搜索解决方案,但我几乎只能找出如何处理一个完全没有类型但没有任何关于如何修复“库中提供的类型。
这是一个显示相同错误的 CodeSandbox(必须正在编辑沙箱。在预览模式下不显示。
解决方案
这看起来像一个 Typescript 错误,react-spring@8
因为是的,Globals
已导出。如果您有兴趣针对 v8 分支进行 PR,我们可以发布此修复程序。
如果您想立即修复,可以添加以下内容:
declare module "react-spring" {
interface Globals {
injectFrame: () => void;
}
export const Globals: Globals;
}
通常到一个*.d.ts
文件或只是你需要它的地方。这将为您提供所需的功能,您可以继续在需要的地方添加更多功能。否则你可以// @ts-expect-error
用来静音错误。
这是一个展示解决方案的沙箱 – https://codesandbox.io/s/admiring-frog-5enu2?file=/src/App.tsx
推荐阅读
- javascript - JavaScript 生成动态输入字段并从中获取 getElementById
- django - 我们可以在表单中使用实例吗?
- r - 删除 ggsurvplot R 中的百分号
- flutter - 我应该在我的代码中的哪个位置放置 BLoC 构建器,我可以拥有更多它们吗?
- cmake - 在 WSL 上找不到包 X11
- python - 2-D ndarray 的 Numpy fromfile 的填充顺序是什么?
- python - 用新数据填充 Panda DF
- css - Reactjs & materialize - 当固定的 div 到达页脚时停止它
- java - 如何在java中使用JSonPath删除json键值
- flutter - Flutter 不适用于 swtich 语句的自定义枚举