typescript - @types/jest index.d.ts 文件返回错误
问题描述
我刚刚在我的 stenciljs 启动应用程序中安装了 @types/jest,现在,当我开始我的项目时,新安装的节点包返回了几个错误。这是我进入npm start
项目时返回的错误:
[ ERROR ] TypeScript: node_modules/@types/jest/index.d.ts:39:30
A rest parameter must be of an array type.
L39: type ArgsType<T> = T extends (...args: infer A) => any ? A : never;
[ ERROR ] TypeScript: node_modules/@types/jest/index.d.ts:218:112
A tuple type element list cannot be empty.
L217: */
L218: ction spyOn<T extends {}, M extends keyof T>(object: T, method: M, accessType: 'get'): SpyInstance<T[M], []>;
L219: function spyOn<T extends {}, M extends keyof T>(object: T, method: M, accessType: 'set'): SpyInstance<void, [T[M]]>;
[ ERROR ] TypeScript: node_modules/@types/jest/index.d.ts:220:144
Type 'ArgsType<T[M]>' does not satisfy the constraint 'any[]'. Type
'{}' is not assignable to type 'any[]'. Property 'length' is missing
in type '{}'.
L219: function spyOn<T extends {}, M extends keyof T>(object: T, method: M, accessType: 'set'): SpyInstance<void, [T[M]]>;
L220: T, method: M): T[M] extends (...args: any[]) => any ? SpyInstance<ReturnType<T[M]>, ArgsType<T[M]>> : never;
L221: /**
[ ERROR ] TypeScript: node_modules/@types/jest/index.d.ts:807:50
Type 'ArgsType<T[P]>' does not satisfy the constraint 'any[]'. Type
'{}' is not assignable to type 'any[]'.
L806: type Mocked<T> = {
L807: [P in keyof T]: T[P] & MockInstance<T[P], ArgsType<T[P]>>;
L808: } & T;
这是我的 package.json:
...
"dependencies": {
"@stencil/core": "~0.15.2",
"@stencil/router": "~0.3.1",
"imask": "^4.1.5",
"jwt-decode": "^2.2.0",
"material-design-icons": "^3.0.1"
},
"license": "MIT",
"devDependencies": {
"@types/jest": "^23.3.14",
"@types/puppeteer": "1.12.1",
"jest": "23.6.0",
"jest-cli": "23.6.0",
"puppeteer": "1.8.0",
"workbox-build": "3.4.1"
}
...
这是我的 tsconfig.json:
{
"compilerOptions": {
"allowSyntheticDefaultImports": true,
"allowUnreachableCode": false,
"declaration": false,
"experimentalDecorators": true,
"lib": [
"dom",
"es2015"
],
"moduleResolution": "node",
"module": "esnext",
"target": "es2017",
"noUnusedLocals": true,
"noUnusedParameters": true,
"jsx": "react",
"jsxFactory": "h"
},
"include": [
"src"
],
"exclude": [
"node_modules"
]
}
我尝试使用新的模板启动器应用程序复制错误,但它不是应用程序。此外,尝试删除我的package-lock.json
并重新安装软件包以消除任何潜在的冲突。
解决方案
尝试添加"skipLibCheck": true
以tsconfig.json
跳过所有声明 (.d.ts) 文件的类型检查。
编辑:这更像是一个“大锤”解决方法,而不是实际修复。正如在另一个答案中所引用的那样,这个问题可能会发生,因为 Jest 类型是为比项目中使用的版本更新的 TypeScript 版本制作的。因此,正确的解决方法是将项目升级到更新的 TS 版本。
推荐阅读
- visual-studio-code - 当光标移过折叠部分时,防止 VSCode 展开代码
- ruby-on-rails - 搜索 form_tag 不工作 Ruby on Rails
- php - 多维 PHP 数组转换为 HTML 表
- python - write() 函数不被覆盖
- python - 如何在python中插入字符串?
- c# - 一个对象属性在列表中重复多少次
- json - 快速解析嵌套对象 json
- openssl - 如何在 CentOS 8 localhost 上为开发目的设置自签名证书?
- dynamic-programming - 动态规划问题帮助。给定一组步数,最大化楼梯总和
- c++ - 为什么在这段代码中,静态 int 不会改变或产生编译错误?