Reactjs ';对象可能未定义';React Typescript中的非对象变量出错

Reactjs ';对象可能未定义';React Typescript中的非对象变量出错,reactjs,typescript,Reactjs,Typescript,所以我找到了5-6个其他问题,实际上我用“!”操作符修复了它,所以不要删除这个问题以进行重复,但我不明白的是变量不是对象。这就是背景 import { createContext } from "react"; interface PlanetInfos { planetName: string; radius: string; distanceFromSun?: string; numberOfMoons?: string; averageTemper

所以我找到了5-6个其他问题,实际上我用“!”操作符修复了它,所以不要删除这个问题以进行重复,但我不明白的是变量不是对象。这就是背景

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>>({});