Reactjs Spread运算符将API响应分配给接口

Reactjs Spread运算符将API响应分配给接口,reactjs,typescript,Reactjs,Typescript,此问题的代码示例如下: 我为具有许多属性的对象提供了接口: 接口自动化{ id:字符串; 名称:字符串; 类型:字符串; 活动:布尔值; 触发:{ id:字符串; 活动:布尔值; 条件:{ 全部:[]; 任何:[]; }; }; createdAt:数字; 更新日期:编号; 特工{ 语言:字符串; 模型:字符串; 版本:编号; 培训日期:编号; }; ... ... ... ]; 此对象的状态挂钩: const[automation,setAutomation]=useState({});

此问题的代码示例如下:

我为具有许多属性的对象提供了接口:

接口自动化{
id:字符串;
名称:字符串;
类型:字符串;
活动:布尔值;
触发:{
id:字符串;
活动:布尔值;
条件:{
全部:[];
任何:[];
};
};
createdAt:数字;
更新日期:编号;
特工{
语言:字符串;
模型:字符串;
版本:编号;
培训日期:编号;
};
...
...
...
];
此对象的状态挂钩:

const[automation,setAutomation]=useState({});
以及从Firestore获取具有相同数据的文档:

const doc=await db.collection(someCollection).doc(someId.get();
我想使用setAutomation将此firestore文档分配给state:

setAutomation({…doc.data(),id:doc.id});
我得到了一个错误:

“{id:string;}”类型的
参数不能分配给“SetStateAction”类型的参数。
类型“{id:string;}”缺少类型“Automation”中的以下属性:名称、类型、活动、触发器和其他2个属性。
问题:
有没有一种方法可以将排列运算符与doc.data()一起使用方法并使TypeScript不担心数据类型?

也许吧,但是如果没有一个可以放入独立IDE的方法,就像我不确定的那样。你越容易让其他人自己演示这个问题,你就越有可能得到有用的答案。祝你好运!TypeScript可以推断扩展类型,所以你不必做任何事情问题可能是
doc.data()
返回
对象
,typescript不知道这个
对象
应该是
自动化
。所以你可能必须将它转换为
…(doc.data()作为自动化)
。事实上,我不能确定这一点,因为我不知道firebase的类型,但这是最有可能的reason@AlexChashin“…(doc.data()作为自动化)”这实际上解决了我的问题。非常感谢!