You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Jest+TypeScript编写测试时定义函数报错

解决Jest运行TypeScript测试时的语法错误问题

你的TypeScript测试代码(简化版):

describe('Test function', () => {
    test('Arrow function', () => {
        const myFunction = (x: number) => x + 1 // 类型注解处报错
        expect(myFunction(3)).toBe(4);
    });
});

运行Jest时出现语法错误,提示Unexpected token, expected ",",指向参数的类型注解x: number——这是因为Jest默认会把.ts文件当作普通JavaScript处理,而原生JS不支持TypeScript的类型注解语法。

结合你提到的补充信息:tsc编译正常、全局定义函数也报错、用function关键字定义带类型的函数同样报错,进一步确认问题出在Jest未配置TypeScript编译环节。

解决步骤:

  1. 安装必要依赖
    确保项目已安装ts-jest(Jest的TypeScript预处理器)、@types/jest(Jest的类型定义)和typescript:

    npm install --save-dev ts-jest @types/jest typescript
    
  2. 生成Jest的TypeScript配置文件
    执行以下命令自动生成适配TS的Jest配置:

    npx ts-jest config:init
    

    执行后项目根目录会生成jest.config.js,其中关键配置如下:

    module.exports = {
      preset: 'ts-jest',
      testEnvironment: 'node',
    };
    
  3. 检查package.json的测试脚本
    确保package.json中的test脚本指向Jest命令:

    {
      "scripts": {
        "test": "jest"
      }
    }
    
  4. 验证配置
    直接运行测试命令:

    npm test
    

    此时Jest会通过ts-jest先将TypeScript编译为JavaScript,再执行测试,类型注解不会再触发语法错误。

额外说明:

如果你的项目已有自定义tsconfig.json,可以在jest.config.js中指定其路径,确保编译规则一致:

module.exports = {
  preset: 'ts-jest',
  testEnvironment: 'node',
  "ts-jest": {
    tsconfig: "./tsconfig.test.json" // 替换为你的tsconfig路径
  }
};

内容的提问来源于stack exchange,提问作者Ettore Galli

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 15:35:40