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

使用TypeScript创建Context Provider时出现Parsing error: Expression expected的原因及所需TypeScript版本解析

解析错误:Expression expected 原因及修复方案

首先,咱们直接揪出这个错误的核心根源——你在创建Context默认值的代码里犯了一个明确的语法错误:

在createContext的对象字面量中,你写了getResults?: async () => void,这完全不符合JavaScript/TypeScript的对象语法规则:

  • ?:是用来在接口/类型定义里标记属性为可选的,不能在对象字面量里用来定义属性值;
  • 这里你需要的是提供一个实际的函数实现(或者因为接口里getResults是可选的,直接省略这个属性),而不是写类型注解。

修复后的代码

你可以选择两种方式修复:

方式1:提供一个空的异步函数实现

const StateContext = createContext<ContextParametersType>({
  greenValue: { greenStatus: new Set<EnumType>(), setGreenStatus: () => { } },
  redValue: { redStatus: new Set<EnumType>(), setRedStatus: () => { } },
  searchValue: { searchTerm: '', setSearchTerm: () => { } },
  // 提供符合类型要求的空实现
  getResults: async () => {}
})

方式2:直接省略可选属性

因为你的ContextParametersType接口里getResults是可选的(带?),所以默认值里可以完全不写这个属性:

const StateContext = createContext<ContextParametersType>({
  greenValue: { greenStatus: new Set<EnumType>(), setGreenStatus: () => { } },
  redValue: { redStatus: new Set<EnumType>(), setRedStatus: () => { } },
  searchValue: { searchTerm: '', setSearchTerm: () => { } }
})

关于TypeScript版本的问题

这个错误和你使用的TypeScript 4.8.4完全无关,纯粹是语法使用错误。不管你升级到哪个版本的TypeScript,这种不符合语法规则的代码都会报错。

额外的小建议

你的getResults函数里动态require('axios')的写法不太规范,建议改成顶部静态导入,这样更符合TypeScript的最佳实践:

import axios from 'axios';

// ...

const getResults = async () => {
  const options = {
    method: 'GET',
    url: 'https://google-search72.p.rapidapi.com/search',
    params: {query: 'rapidapi', gl: 'us', lr: 'en', num: '10', start: '1'},
    headers: {
      'X-RapidAPI-Key': 'SIGN-UP-FOR-KEY',
      'X-RapidAPI-Host': 'google-search72.p.rapidapi.com'
    }
  };
  try {
    const response = await axios.request(options);
    console.log(response.data);
    // 这里可以把获取到的数据设置到results状态里,比如setResults(...)
  } catch (error) {
    console.error(error);
  }
};

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.27 13:27:36