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

Vitest对仅导出TypeScript类型、接口的文件无覆盖率问题排查

纯TypeScript类型文件覆盖率为0%的原因与解决办法

问题原因

  • TypeScript的类型、接口属于编译时语法,编译成JavaScript时会被完全擦除,不会生成任何可执行代码。
  • Vitest默认使用V8覆盖率工具,它仅追踪运行时实际执行的代码。纯类型文件编译后没有可执行内容,因此覆盖率显示为0%——哪怕这些类型在其他模块被引用,也不会改变这个结果。

解决方案

根据需求选择以下方式:

1. 排除纯类型文件,优化覆盖率统计

修改vitest.config.ts的coverage配置,添加exclude字段,把仅包含类型/接口的文件排除在外(可根据你的文件命名规则调整匹配路径):

import path from 'path'
import vue from '@vitejs/plugin-vue'
import { defineConfig } from 'vitest/config'

export default defineConfig({
  plugins: [vue()],
  test: {
    environment: 'jsdom',
    coverage: {
      all: true,
      include: ['Modules/Auth/**/*.ts'],
      // 排除纯类型文件,示例匹配*Response.ts、*Interface.ts后缀的文件
      exclude: [
        'Modules/Auth/**/*Response.ts',
        'Modules/Auth/**/*Interface.ts'
      ]
    }
  },
  resolve: {
    alias: {
      '~': path.resolve(__dirname)
    }
  }
})

2. 接受正常现象,明确覆盖率统计范围

如果不需要排除这些文件,需明确:覆盖率统计的是运行时业务代码的执行情况,类型定义不属于可执行逻辑,0%覆盖率是符合预期的结果,无需额外处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 04:37:19