解决 npm 包提供的错误 index.d.ts 文件

Working around a bad index.d.ts file provided by npm package

我最近遇到了一个 npm 包,它不是用 TypeScript 编写的,但确实提供了自己的 index.d.ts 文件。不幸的是,这些类型是不准确的,并且是由没有维护包的人提供的。当我添加 /// <reference... 指令以指向我的固定类型时,VS Code 似乎不确定要做什么,并通知我给定对象有两种类型定义。在这未解决的情况下,我无法继续前进。除了在我的机器上编辑 node_modules 中的文件外,我还需要做什么才能开始工作?

如果这些类型由 DefinitelyTyped 提供,这将很容易:我只需删除不良类型,提交包含我的更改的 PR,同时使用我的本地版本。因为这个 index.d.ts 是库本身的一部分,我唯一的选择是克隆整个 repo,从那里开始工作,在我准备好时提交 PR,希望他们快速合并并发布一个新版本?这似乎不对。有没有办法告诉编译器忽略 node_modules 中的特定 index.d.ts 文件,所以我的文件是唯一的?

tsconfig.json文件中的compilerOptions中添加skipLibCheck: true。 这将禁用所有 *.d.ts 文件的类型检查。

标志在 compiler options documentation 中描述。

如果您确定您的代码是正确的,另一种选择是通过在出现错误的行上使用 // @ts-ignore 注释来忽略错误。

这里还有一个 到类似的 post,它也提供了两种可能的解决方案。

@AlesD 在评论中链接到另一个答案的评论 完美地解决了这个问题。在 src 中,创建 node_modules/problem-library/index.d.ts 并将更新的类型定义放在那里。它们将覆盖图书馆提供的那些。

您的 .gitignore 可能会忽略您的文件,这可不好。你可以修复 通过修改你的 .gitignore

node_modules/
!src/node_modules/

第一个是您现有的文件夹排除,第二个是添加一个模式,在这种情况下会取消它。