首页 > 解决方案 > 如何允许缺少 .d.ts 类型定义的模块?

问题描述

我正在使用一些不受欢迎的模块,例如Dyoandjs-sha3似乎没有任何类型。

我现在并不真正关心第三方库中的类型,我不想花几个小时来输入这些。我主要将它用于服务器以限制我的错误并在开发过程中使故障排除更容易。

我之前有一个Cannot find module X错误,所以我添加了:"moduleResolution": "node"在我的 tsconfig.json 文件中。

如何使打字稿不抱怨节点模块缺少类型?

整个错误:

Could not find a declaration file for module 'dyo'. '/node_modules/dyo/dist/dyo.umd.js' implicitly has an 'any' type.
  Try `npm install @types/dyo` if it exists or add a new declaration (.d.ts) file containing `declare module 'dyo';` [7016]

// @ts-nocheck在网络的某个黑暗地方的评论中发现,但它似乎不起作用。

我可以通过模块关闭它吗?

标签: typescriptimport

解决方案


您可以创建.d.ts允许从模块导入任何内容的虚拟定义 - 导入它会导致dyo具有any类型(导入它的确切方式取决于esModuleInterop编译器设置,以及这些东西是如何从中导出的dyo.umd.js)。

  1. 在项目中的某处创建一个文件dyo.d.ts,其中包含一行

    declare module 'dyo';
    
  2. 在引用该模块的文件中,将此行添加到顶部,并带有适当的dyo.d.ts文件路径:

    /// <reference path='./dyo.d.ts' />
    

2. 的替代方法是添加dyo.d.ts到文件编译中包含的文件列表中tsconfig.json

"files": [
    ... other files as necessary ...

    "./path/to/dyo.d.ts"
]

推荐阅读