如何允许缺少.d.ts类型定义的模块?[英] How to allow modules that have missing .d.ts type definition?

问题描述

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

我现在并不真正在乎第三方库中的类型,我不想花几个小时来打字.我主要将其用于服务器来限制我的错误并在开发过程中更轻松地进行故障排除.

我之前有一个错误

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

整个错误:

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,但似乎不起作用.

我可以通过模块关闭吗?

推荐答案

您可以创建虚拟.d.ts定义,该定义将允许从模块导入任何内容 - 导入它将导致dyo have any type(准确的导入方法取决于esModuleInterop)编译器设置,以及如何从dyo.umd.js导出事物).

  1. 创建一个文件dyo.d.ts在您的项目中的某个地方,其中有一行

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

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

是2的替代方法.

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

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

其他推荐答案

对于不想创建自己的.d.ts定义文件的人,您可以在tsconfig.json中使用"noImplicitAny": false允许使用没有打字条的外部库.

示例:

{
  "compileOnSave": false,
  "compilerOptions": {
     ...
    "noImplicitAny": false,
     ...
    }
  }
}

这允许Typescript推断any从每个缺失类型中键入类型,因此这也会影响您自己的项目.

本文地址:https://www.itbaoku.cn/post/2129610.html