使用Object.keys(javascript)将数组映射到字符串

时间:2018-05-02 06:41:35

标签: javascript angular typescript

我有一个c.errors类型的对象,在特定情况下返回:

  

{required:true}

我想把它映射到更通用(和固定的数组)

   validationMessages = {
    required: 'Please enter',
    pattern: 'Please enter valid'
  }

我还有一个用空字符串初始化的errorMessage属性   。   我的尝试是:

 this.errorMessage = Object.keys((c.errors).map(key => this.validationMessages[key]).join(' '));

我得到的错误:

  

参数'key'隐式具有'any'类型。

     

Element隐式具有'any'类型,因为类型'{required:   串; pattern:string; }'没有索引签名。

有什么建议吗?

this.errorMessage应该包含'Please enter'(这是我在映射后的期望)

1 个答案:

答案 0 :(得分:0)

如果索引到没有索引器的类型,则typescript期望您索引的字符串是该类型的键。这意味着,在您的情况下,key应为字符串文字类型'required''pattern'。由于Object.keys返回strings数组,如果您确定该数组只包含validationMessages的有效键,则可以使用类型断言。你也有一些不匹配的括号:

this.errorMessage = Object.keys(c.errors).map((key) => this.validationMessages[key as 'required']).join(' ');