Javascript 将对象转换为带有TS中键入的映射的数组
我正在尝试将来自Firebase的值对象转换为类型化的值数组:Javascript 将对象转换为带有TS中键入的映射的数组,javascript,typescript,firebase-realtime-database,Javascript,Typescript,Firebase Realtime Database,我正在尝试将来自Firebase的值对象转换为类型化的值数组: const snapshot = await db.teams().once('value'); const teams: Array<ITeam> = Object.entries(snapshot.val()).map( ([id, { identifier, name }]): ITeam => { return { identifier, name, id }; } );
const snapshot = await db.teams().once('value');
const teams: Array<ITeam> = Object.entries(snapshot.val()).map(
([id, { identifier, name }]): ITeam => {
return { identifier, name, id };
}
);
但我遇到了如下错误:
Property 'identifier' does not exist on type 'unknown'.
Property 'name' does not exist on type 'unknown'.
我不确定如何修复此问题。
val
可能是一个具有未知属性的对象。为了能够访问属性,您可能需要将val
断言为Record
const teams:Array=Object.entries(snapshot.val()作为记录).map(
([id,{identifier,name}]):ITeam=>{
返回{标识符,名称,id};
}
);
ILeague
不应该是ITeam
的类型属性吗?谢谢!我缺少记录
类型。我没有意识到这一点。
Property 'identifier' does not exist on type 'unknown'.
Property 'name' does not exist on type 'unknown'.
const teams: Array<ITeam> = Object.entries(snapshot.val() as Record<string, ITeam>).map(
([id, { identifier, name }]): ITeam => {
return { identifier, name, id };
}
);