Typescript Object.entries属性';长度';类型中缺少

Typescript Object.entries属性';长度';类型中缺少,typescript,typescript2.0,Typescript,Typescript2.0,用我的代码 for (const [teamName, teamData] of Object.entries<TeamsData>(data)) { ... } 查看Object.entries的界面,我明白了 entries<T>(o: { [s: string]: T } | ArrayLike<T>): [string, T][]; 条目(o:{[s:string]:T}| ArrayLike):[string,T][]; 所以我觉得它应该

用我的代码

for (const [teamName, teamData] of Object.entries<TeamsData>(data)) {
  ...
}

查看Object.entries的界面,我明白了

entries<T>(o: { [s: string]: T } | ArrayLike<T>): [string, T][];
条目(o:{[s:string]:T}| ArrayLike):[string,T][];

所以我觉得它应该匹配
{[s:string]:TeamsData;}
,但事实并非如此。相反,它看起来像是在匹配
ArrayLike
,这导致它需要
length
。当类型和错误消失时,我可以使用
any
,但我想知道如何正确使用TypeScript中的
Object.entries

我不确定这不起作用的确切原因,但问题似乎是显式传入了泛型类型

只要
数据
强类型为
TeamsData
,那么您就可以让编译器为您推断
T

interface TeamsData {
  [key: string]: number;
}
const data: TeamsData = { a:1, b:2 }
for (const [teamName, teamData] of Object.entries(data)) {
  //...
}
entries<T>(o: { [s: string]: T } | ArrayLike<T>): [string, T][];
interface TeamsData {
  [key: string]: number;
}
const data: TeamsData = { a:1, b:2 }
for (const [teamName, teamData] of Object.entries(data)) {
  //...
}