30

https://www.typescriptlang.org/play/index.html并粘贴:

让userTypes={};let keys=Object.keys[userTypes];

接收错误:

错误TS2538:类型“{}”不能用作索引类型。

为什么?

2个答案2

重置为默认值
20

对象.键返回属性数组。不能使用对象索引数组;必须使用一个数字来表示从数组开始的偏移量。

作为一个等效示例,您希望此代码做什么

变量a=[1,2,3,4]控制台.log(a[{}]);

这是荒谬的。

编辑:在阅读OP的评论并再次查看代码后,我意识到我的评估是错误的。While期间问题是原始代码正在尝试索引钥匙函数使用对象文字,真正的问题是使用方括号而不是括号。这将起作用:

let keys=对象.keys(用户类型);

它会呼叫钥匙具有用户类型而不是用它索引。

4
  • 我希望它返回未定义的…:D类 评论 2016年12月30日18:44
  • 1
    本来应该是Object.keys(用户类型) 评论 2016年12月30日18:46
  • 实际上,我误解了代码。我以为你的问题只是因为你在用{},这是因为您尝试索引钥匙函数使用对象文字。你说得对,但真正的问题是方括号的使用不正确。我会更新我的答案。
    – 致癌物
    评论 2016年12月30日18:52
  • 我希望它相当于{“[object object]”:未定义}[{}].
    – 科迪
    评论 2018年12月6日23:02
-1

最简单的解决方案是使用item.key[作为索引]添加空字符串。

让userTypes={};let keys=Object.keys[userTypes+''];

我们也可以在*ngFor中使用这个技巧,在这里我们使用keyValue管道来处理对象!!

您的答案

单击“发布您的答案”,表示您同意我们的服务条款并确认您已阅读我们的隐私政策.

不是你想要的答案吗?浏览标记的其他问题问你自己的问题.