Node.js VS代码不识别笑话,用Intellisense划线

Node.js VS代码不识别笑话,用Intellisense划线,node.js,typescript,visual-studio-code,jestjs,Node.js,Typescript,Visual Studio Code,Jestjs,我在一个使用Jest进行测试的Typescript项目中使用VS代码。出于某种原因,VS代码认为Jest全局变量不可用: 我的开发依赖项中安装了Jest typedefs "devDependencies": { // ...truncated "@types/jest": "^20", "jest": "^20.0.4", "ts-jest": "^20.0.7", "ts-node": "^5.0.0", "typescript": "~2.

我在一个使用Jest进行测试的Typescript项目中使用VS代码。出于某种原因,VS代码认为Jest全局变量不可用:

我的开发依赖项中安装了Jest typedefs

"devDependencies": {
    // ...truncated
    "@types/jest": "^20",
    "jest": "^20.0.4",
    "ts-jest": "^20.0.7",
    "ts-node": "^5.0.0",
    "typescript": "~2.4.0"
}

我将我的Typescript版本升级到2.8,这个问题就消失了。我将假设这是某种缓存问题。

这里的正确答案是,typescript要求在对intellisense可见jest全局对象之前对jest进行类型声明

将此三重斜杠指令添加到测试文件的开头:

/// <reference types="jest" />
//

尽管在我的
devdependences
中也有
@types/jest
,但我同样也多次与这个问题作斗争

我创建了一个非常小的包装器来支持导入Jest的特性,而不是依赖全局变量,从而确保变量的存在。
它也是用TypeScript编写的,确保在导入时正确键入,并且不需要执行导入以外的任何操作即可使类型正常工作

,使用起来很简单:

中可用的所有函数,以及
jest
expect
,都可以从
jest导入,而无需全局变量


我曾尝试创建
npmi@types/jest
和VSCode-discovered
jest
全局对象。尝试重新安装/重新启动/清除缓存…能否共享您的
.tsconfig
?这可能是一个愚蠢的问题,但您是否导入了正在使用的对象?此外,这个问题可能会有所帮助:Jest被设置为全局对象,这样就不需要在每个测试文件中导入这些函数。
import { describe, it, expect } from 'jest-without-globals'

describe('describe should create a section', () => {
  it('it should checkmark', () => {
    expect('').toBe('')
   })
})