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

使用TypeScript编写Jest it.each时遇TS2349错误,求解决方案

解决TypeScript中Jest it.each模板字符串语法的TS2349错误

你遇到的TS2349错误,核心原因是误用了it.each的模板字符串语法——你给模板字符串套了括号,导致它被解析成普通字符串,后面的(...)试图调用这个字符串,自然会报“String没有调用签名”的错。

错误写法的问题点

你的代码里错误地给模板字符串加了括号包裹,导致语法逻辑混乱:

it.each(
  `field       |      expectedMessage
  ${"username"} | ${"Username cannot be null"}
`(
    // ...测试内容
  )
);

这里it.each(...)把模板字符串当成普通参数传入,后续又试图调用这个字符串,完全不符合Jest的模板字符串语法规范。

正确的基础写法

it.each的模板字符串语法不需要括号,直接把模板字符串跟在it.each后面即可:

it.each`
  field       |      expectedMessage
  ${'username'} | ${'Username cannot be null'}
`(
  "returns $expectedMessage when $field is null",
  async ({ field, expectedMessage }) => {
    // ...你的测试逻辑
  }
);

正确的泛型写法

如果要给测试参数添加类型定义,泛型要写在each和模板字符串之间,注意不要断行导致语法错误:

it.each<{ field: string; expectedMessage: string }>`
  field       |      expectedMessage
  ${'username'} | ${'Username cannot be null'}
`(
  "returns $expectedMessage when $field is null",
  async ({ field, expectedMessage }) => {
    // ...你的测试逻辑
  }
);

这样就能解决类型错误,同时正确使用it.each的模板字符串语法。

内容的提问来源于stack exchange,提问作者Stanley Ulili

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 22:15:08