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

TypeScript报错:'SomeExample'仅为类型却被用作值,求排查

解决TypeScript报错:'SomeExample' only refers to a type, but is being used as a value

错误原因

问题出在类型定义文件与实际JS导出不匹配:

  • 你的JS库代码(the-lib/index.js)导出的是一个运行时存在的值SomeExample
  • 但对应的类型定义文件(the-lib/index.d.ts)只导出了一个TypeScript类型SomeExample

TypeScript类型检查时仅读取.d.ts中的定义,它无法感知JS代码里导出的同名值,因此会把业务代码中使用的SomeExample判定为类型,而你实际是把它当作值来使用,最终触发报错。

解决方案

修改the-lib/index.d.ts,让它同时声明导出的值及其类型,以下两种写法都可以:

写法一:分别声明类型和值

// 定义类型结构
export type SomeExample = Record<string, string[]>;
// 声明导出的变量符合该类型
export const SomeExample: SomeExample;

写法二:先声明值的类型,再导出类型别名

// 先声明导出的变量及其类型
export const SomeExample: Record<string, string[]>;
// 将变量的类型导出为类型别名,方便后续做类型标注
export type SomeExample = typeof SomeExample;

修改完成后,TypeScript就能正确识别SomeExample既是运行时可用的值,也是可用于类型约束的类型。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 19:36:02