Reactjs 函数和数据未出现在类型ContextProps上。使用TypeScript响应上下文

Reactjs 函数和数据未出现在类型ContextProps上。使用TypeScript响应上下文,reactjs,typescript,Reactjs,Typescript,在使用React上下文和TypeScript传递内容时,我遇到了一些模糊的错误 该应用程序运行良好,显示了它需要的所有功能,但TypeScript对我大喊大叫 这就是我的背景 import React,{createContext,useContext,useffect,useState}来自'React'; 类型口袋妖怪={ 编号:字符串; 名称:字符串; 图像:字符串; }; 类型ContextProps={ 捕获者:口袋妖怪[]; 捉住口袋妖怪:(新口袋妖怪:口袋妖怪[])=>void;

在使用React上下文和TypeScript传递内容时,我遇到了一些模糊的错误

该应用程序运行良好,显示了它需要的所有功能,但TypeScript对我大喊大叫

这就是我的背景

import React,{createContext,useContext,useffect,useState}来自'React';
类型口袋妖怪={
编号:字符串;
名称:字符串;
图像:字符串;
};
类型ContextProps={
捕获者:口袋妖怪[];
捉住口袋妖怪:(新口袋妖怪:口袋妖怪[])=>void;
releasePokemon:(id:string)=>void;
};
const CaughtContext=createContext(null);
export const usecapt=()=>useContext(CaughtContext);
export const CaughtProvider:React.FC=({children})=>{
const[capturedPokemons,setCapturedPokemons]=useState([]);
const catchPokemon=(新口袋妖怪:pokemonops[])=>{
如果(capturedPokemons.length>=6){
警惕('你不能再携带任何口袋妖怪');
返回;
}
const alreadyCaptured=capturedPokemons.some(
(p:pokemonops)=>p.name==newPokemon[0]。name
);
如果(已捕获){
警惕(“你已经有了那个口袋妖怪”);
返回;
}
if(window.confirm('Capture Pokemon')){
setCapturedPokemons([…capturedPokemons,…newPokemon]);
}
};
返回(
{儿童}
);
};
当使用上述代码使用我的应用程序中的函数或状态时,例如
const{catchPokemon}=usecapt()我获取并出错“属性'catchPokemon'在类型'ContextProps | null'上不存在”。当我在此处创建类型时,
catchPokemon
如何在类型
ContextProps
上不存在:

type ContextProps={
捕获者:口袋妖怪[];
捉住口袋妖怪:(新口袋妖怪:口袋妖怪[])=>void;
releasePokemon:(id:string)=>void;
};

再一次,一切正常,但Typescript告诉我模糊的解决方案出了问题。

如果您尝试执行const{catchPokemon}=useContext(CaughtContext),是否有效不是
usecapt
?它仍然存在错误如果从中删除
null
,则会发生错误,因为createContext需要默认值您需要提供默认值而不是null。类似于
{capturedPokemons:[],catchPokemon:()=>未定义,releasePokemon:()=>未定义}
应该可以