Reactjs 使用typescript确定上下文中的状态类型

Reactjs 使用typescript确定上下文中的状态类型,reactjs,typescript,context-api,Reactjs,Typescript,Context Api,在我计算bmi的项目中,我希望将结果作为一个数组保存在一个状态中,并将其保存在本地 export type BmiContextState = { weight: number | undefined; height:number | undefined; open:boolean|undefined; alert:boolean|undefined; results:resultState; handleWeight(event: React.C

在我计算bmi的项目中,我希望将结果作为一个数组保存在一个状态中,并将其保存在本地

export type BmiContextState = {
    weight: number | undefined;
    height:number | undefined;
    open:boolean|undefined;
    alert:boolean|undefined;
    results:resultState;
    handleWeight(event: React.ChangeEvent<HTMLInputElement>): void;
    handleHeight(event: React.ChangeEvent<HTMLInputElement>): void;
    openModal(event: React.MouseEvent<HTMLButtonElement, MouseEvent>):void;
    openAlert(event: React.MouseEvent<HTMLButtonElement, MouseEvent>):void;
    calculate:(weight:number,height:number)=>number;
    bmi:(bmi:number)=>string;

  };

export interface resultState {
    results:{
      bmi:number,
      bmiResult:string,
    }
}

结果部分给出了一个错误,我应该如何定义它?

您必须将
result
更改为
results
,然后您可以按如下方式初始化它:

results: {results:{bmi:0,bmiResult: 'hello'}}

请参见

Put
playway
链接以执行typescript codewhat is playground这是typescript的在线编辑器。这一次,它在提供程序内部发送结果时出错。它说,;键入“{open:boolean |未定义;alert:boolean |未定义;weight:number;height:number;result:resultState;handleWeight:(event:any)=>void;handlehight:(event:any)=>void;openAlert:(event:any)=>void;openAlert:(event:any)=>void;calculate:(weight:number,height:number)=>number;体重指数:(bmi:num..不可分配给类型“BmiContextState”。对象文字可能只指定已知属性,但类型“BmiContextState”中不存在“result”。是否要写入“results”?t请将代码写入,然后在注释中添加
url
,以调试该属性。您的代码有很多依赖项。是否可以删除依赖项(react和..)?我认为主要问题在于typescriptthx中的所有内容
results: {results:{bmi:0,bmiResult: 'hello'}}