Javascript 将对象转换为带有TS中键入的映射的数组

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 }; } );

我正在尝试将来自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 };
    }
);
但我遇到了如下错误:

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 };
    }
);