我有下一个枚举:
\nexport enum Suite {\n Spade = \'\xe2\x99\xa0\',\n Heart = \'\xe2\x99\xa5\',\n Club = \'\xe2\x99\xa3\',\n Diamond = \'\xe2\x99\xa6\',\n}\nRun Code Online (Sandbox Code Playgroud)\n尝试实现循环,但出现错误
\n for (let suite in Suite) {\n console.log(\'item:\', Suite[suite]);\n }\nRun Code Online (Sandbox Code Playgroud)\n\n\n\n元素隐式具有“any”类型,因为类型“string”的表达式不能用于索引类型“typeof Suite”。在类型 \'typeof\nSuite\' 上找不到参数为 \'string\' 类型的索引\n签名。ts(7053)
\n
我该如何解决这个问题?
\nCon*_*Low 15
suite您需要使用类型约束来缩小密钥的类型。您可以通过在循环之前声明它来做到这一点:
enum Suite {\n Spade = \'\xe2\x99\xa0\',\n Heart = \'\xe2\x99\xa5\',\n Club = \'\xe2\x99\xa3\',\n Diamond = \'\xe2\x99\xa6\',\n}\n\nlet suite: keyof typeof Suite;\nfor (suite in Suite) {\n const value = Suite[suite];\n // ...\n}\nRun Code Online (Sandbox Code Playgroud)\n或者使用Object.entries:
for (const [key, value] of Object.entries(Suite)) {\n // key = Spade, etc.\n // value = \xe2\x99\xa0, etc.\n}\nRun Code Online (Sandbox Code Playgroud)\n\n
| 归档时间: |
|
| 查看次数: |
5437 次 |
| 最近记录: |