Reactjs ';对象可能未定义';React Typescript中的非对象变量出错
所以我找到了5-6个其他问题,实际上我用“!”操作符修复了它,所以不要删除这个问题以进行重复,但我不明白的是变量不是对象。这就是背景Reactjs ';对象可能未定义';React Typescript中的非对象变量出错,reactjs,typescript,Reactjs,Typescript,所以我找到了5-6个其他问题,实际上我用“!”操作符修复了它,所以不要删除这个问题以进行重复,但我不明白的是变量不是对象。这就是背景 import { createContext } from "react"; interface PlanetInfos { planetName: string; radius: string; distanceFromSun?: string; numberOfMoons?: string; averageTemper
import { createContext } from "react";
interface PlanetInfos {
planetName: string;
radius: string;
distanceFromSun?: string;
numberOfMoons?: string;
averageTemperature: string;
svg: string;
}
type ContextProps = {
miliSeconds: number;
setmiliSeconds: any;
planetInfos: PlanetInfos[];
};
const PlanetContext = createContext<Partial<ContextProps>>({});
export default PlanetContext;
它说“对象可能未定义”,这对我来说毫无意义。因为它从来不是一个物体。那么,除了在应用程序中的每个地方都加上感叹号之外,还有什么解决办法吗?createContext({});
createContext<Partial<ContextProps>>({});
我认为这段代码导致定义的上下文类型不等于ContextProps,但所有对象字段都可能是未定义的。部分util类型可以做到这一点。然后,即使您在使用应用程序组件之前定义了上下文中的值,typescript对此一无所知,并从Partical推断出毫秒的类型,因此它将是
number |未定义的
,这是因为您使用了partial:partial。Partials使所有内容都是“可选的”=您提到的类型或“未定义的”如果没有任何属性应该是“未定义的”,您不需要使用Partial,您可以编写:createContext({}作为ContextProps)代码>或者可能createContext({}作为ContextProps)代码>你可以改进:setmilisons:(ms:number)=>void
哦,伙计,谢谢,这解决了所有问题。只是无法获取参数thoughno中的ms内容,我按照您所说的更改了createContext,没有得到任何错误。我删除了部分内容
const { miliSeconds } = useContext(PlanetContext);
createContext<Partial<ContextProps>>({});