【问题标题】:Typescript. Declare module in npm packet doesnt work打字稿。在 npm 包中声明模块不起作用
【发布时间】:2020-04-03 13:44:48
【问题描述】:

我正在使用 Vue.js + 打字稿。我有一个项目“A”,其中我使用了一个私有 npm 包“B”(它是一个组件库),其中我使用了另一个包 - 'tiptap' 库。默认情况下它没有类型,所以我在项目“A”中编写了我的 shims.d.ts 文件,在那里我声明了模块“tiptap”

declare module 'tiptap' { //... }

它工作正常。但是当我将此文件移动到包 B 时,TypScript 看不到它们并导致没有类型的错误。 Look on the folder of package B

找不到模块“tiptap”的声明文件。 'C:/some_path/tiptap/dist/tiptap.common.js' 隐含一个 'any' 输入。

我做错了什么?

【问题讨论】:

    标签: typescript vue.js tiptap


    【解决方案1】:

    听起来您在项目“A”和“B”中都有文件 shims.d.ts 的副本?问题是编译“B”时没有找到tiptap的类型定义?

    一个常见的问题是.d.ts 文件的位置。它必须位于 TypeScript 将查找源文件的目录中。如果您设置了这些选项,请检查 tsconfig.json 中的 "include""exclude" 设置,并确保 shims.d.ts 位于包含的目录之一中,并且不匹配任何排除模式。

    【讨论】:

    • 现在仅在项目 B 中填充。这不起作用。我应该在项目 A 的配置中写什么来帮助 typercipt 解析项目 B 中的垫片?
    • 我认为解决这个问题的正确方法可能是将类型声明文件复制到项目“A”。通常,一个包不应该捆绑其他包的类型声明。另一种选择是构造“B”,使其公共接口不引用来自tiptap的任何类型。在这种情况下,“A”不需要类型声明。
    • 但这并不能解决我的问题。我想在包 B 中声明类型,因为它必须是可重用的。并且必须引用此类型,如果我使用错误的组件,打字稿必须显示错误。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-18
    • 2019-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多