在方法签名中带有字符串索引的字符串数组看起来如何?

时间:2019-08-21 09:39:19

标签: angular typescript

我有以下方法:

keyValue.forEach(key, value => {
    //key is string
    //value is string
});

如何修改签名,以便keyValue(用字符串填充的数组)的索引应该是string类型,但是在那之后,我仍然可以像这样(也许是这种语法)将其用作数组(也用字符串填充)使用键AND值也是错误的吗?):

jq

1 个答案:

答案 0 :(得分:1)

您似乎误解了Typescript index signature原则。当您输入keyValue : { [index:string] : string}时,您实际上是根本没有定义一个数组。您正在定义Typescript对象的默认签名(〜结构)。

因此,您编写的原型将接受带有字符串作为键和字符串作为值的任何对象,例如:

{
  "keyOne": "valueOne",
  "keyTwo": "valueTwo"
}

要遍历存储在对象中的对,您可以:

for (let [key, value] of Object.entries(keyValue)) {
  /* Do something... */
}

我邀请您看一下我创建的这个stackblitz example来说明它。请注意,指示诸如您建议的索引签名之类的不能确保作为参数传递的给定对象将匹配(运行时不会引发错误)。