包裹 - 如何添加类型定义?

Parcel - How do I add type definitions?

我正在尝试在我的 Typescript 项目中导入一个 .png 文件,但找不到该模块。我使用 Parcel 作为我的编译器,我想添加类型定义。我该如何专门针对 Parcel 执行此操作,因为我找不到任何相关信息?

Parcel依赖于tsconfig.json配置的typescript编译器。可以找到相关文档here

除其他外,配置允许您指定要编译的源文件。以下将是一个有效的配置,编译器将处理 src 路径中的所有 .ts.d.ts 文件:

{
    "include": [
        "src/**/*"
    ]
}

除此之外,许多节点模块都附带打字稿定义。他们是 handled by this rule:

By default all visible “@types” packages are included in your compilation. Packages in node_modules/@types of any enclosing folder are considered visible; specifically, that means packages within ./node_modules/@types/, ../node_modules/@types/, ../../node_modules/@types/, and so on.

如果找不到应该处理 .png 文件的模块,这可能是因为它没有开箱即用的打字稿定义。 有个repository which collects type definitions for many node modules. Maybe you find the definitions there. Maybe these?

There is also an example关于如何安装定义。

也有可能该模块尚不存在类型定义。在这种情况下,您将不得不提出自己的想法。这不一定像听起来那么糟糕。通常你可以创建一个最小的声明文件,它只包含你实际使用的少数方法。这是docs,看看例子。

编辑:

忘了说:这听起来好像与 Parcel 无关。在幕后,Parcel 只是调用打字稿编译器本身。去掉中间人可以使错误消息更容易理解。您可能想尝试直接调用打字稿编译器并对其进行配置,直到所有错误和警告都得到处理。这将更直接并隐藏 Parcel 增加的复杂性。如果打字稿编译器满意,Parcel 应该也能正常工作。

通过在 declare module "*.png"; 项目中添加 globals.d.ts 解决了这个问题 在里面。