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

TS2702报错:EmployeeContext仅为类型却被用作命名空间如何解决

报错原因

该错误ts(2702)的核心成因是TypeScript仅检索到了EmployeeContext的类型定义,没有找到你通过React.createContext创建的可作为值调用的上下文实例对象,因此无法识别.Provider的调用语法。

解决方案
  • 检查EmployeeContext的定义文件,确保你是先定义上下文类型,再创建实例并导出实例,而非仅导出类型,参考正确写法:
// 定义上下文的TS类型
type Employee = {
  // 你的Employee字段定义
  id: number
  name: string
  // ...其他字段
}
type EmployeeContextType = {
  addEmployee: (emp: Omit<Employee, 'id'>) => void
  DefaultData: Record<string, any>
  sortedEmployees: Employee[]
  deleteEmployee: (id: number) => void
  updateEmployee: (id: number, emp: Partial<Employee>) => void
}
// 创建上下文实例并导出
export const EmployeeContext = React.createContext<EmployeeContextType>({
  // 填入默认初始值
  addEmployee: () => {},
  DefaultData: {},
  sortedEmployees: [],
  deleteEmployee: () => {},
  updateEmployee: () => {}
})
  • 检查你使用Context的文件的导入语句,不要用仅导入类型的语法:
// 错误写法:仅导入类型,运行时不存在实际实例
import type { EmployeeContext } from './你的上下文文件路径'
// 正确写法:导入实际的上下文实例
import { EmployeeContext } from './你的上下文文件路径'
  • 修正你贴出的代码里的Provider语法错误:value属性要写在Provider标签内部,且传递的对象要包裹一层对象字面量:
<EmployeeContext.Provider 
  value={{ addEmployee, DefaultData, sortedEmployees, deleteEmployee, updateEmployee }}
>
  {props.children}
</EmployeeContext.Provider>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 01:15:02