【问题标题】:Determining state type in context with typescript使用打字稿在上下文中确定状态类型
【发布时间】:2021-06-09 07:37:32
【问题描述】:

在我计算 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,
    }
}

我定义了一个名为 resultstate 的类型,我希望我的对象在其中。我定义了这样的类型。

const contextDefaultValues: BmiContextState = {
  weight: 0,
  height: 0,
  result: (0,"obesite")[],
  open: false,
  alert: false,
  handleWeight() {},
  handleHeight() {},
  openModal() {},
  openAlert() {},
  calculate: (weight, height) => 0,
  bmi: (bmi) => "",
};

结果部分报错,该如何定义?

【问题讨论】:

  • 放playground链接执行打字稿代码
  • 什么是游乐场
  • 这是一个打字稿的在线编辑器。

标签: reactjs typescript react-context


【解决方案1】:

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

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

见Working Sample

【讨论】:

  • 这次它在提供者内部发送结果时出错。它说 ;输入'{打开:布尔|不明确的;警报:布尔值 |不明确的;重量:数量;高度:数字;结果:结果状态;处理权重:(事件:任何)=> 无效;句柄高度:(事件:任何)=> void; openModal: (event: any) => void; openAlert: (event: any) => void;计算:(体重:数字,身高:数字)=>数字; bmi: (bmi: num...' 不可分配给类型 'BmiContextState'。对象字面量只能指定已知属性,但类型 'BmiContextState' 中不存在'result'。你的意思是写'results'吗?ts
  • 请在playground 中编写您的代码,然后在注释中添加url 以进行调试。
  • 您的代码有很多依赖项。是否可以删除依赖项(反应和..)?我认为主要问题在于打字稿
猜你喜欢
  • 1970-01-01
  • 2018-10-17
  • 1970-01-01
  • 1970-01-01
  • 2022-12-19
  • 2018-01-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多