打字稿-部分状态的打字稿

时间:2020-05-27 09:40:26

标签: typescript

我有一个循环,它向状态添加了一些数据,并尝试解决类型问题。

我创建类型为data的变量名Partial<State>。在我的循环中,我根据ajax响应向数据库添加一些信息。因此,只有部分数据会被分配。

例如

interface State {
   account_internal_data: number,
   account_external_data: number,
   // and more
   // also there is some state that not relative to ajax response
}

Ajax响应是动态的,并且具有部分状态。

const data: Partial<State> = {};
response.forEach((part)=>{
   switch(part.name){
      case 'internal':{
         data.account_internal_data: part.data;
         break;
      }
      case 'external':{
         data.account_external_data: part.data;
         break;
      }
      // and the rest
   }
});
this.setState(data);

当我尝试致电setState(data)时,我得到并错误地指出account_internal_data不能是不确定的。很明显,如果account_internal_data没有通过循环设置,则先前的值应保持不变。

我不想使它不确定(它具有初始值)

由于代码的其他部分,我不想为[key:string]映射状态。

如何根据状态说明data的类型,如果密钥不存在,那么它不是不确定的。

这里是一个例子 https://codesandbox.io/s/react-typescript-winj5?fontsize=14&hidenavigation=1&theme=dark

0 个答案:

没有答案