我有一个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'(这是我在映射后的期望)
答案 0 :(得分:0)
如果索引到没有索引器的类型,则typescript期望您索引的字符串是该类型的键。这意味着,在您的情况下,key
应为字符串文字类型'required'
或'pattern'
。由于Object.keys
返回strings
数组,如果您确定该数组只包含validationMessages
的有效键,则可以使用类型断言。你也有一些不匹配的括号:
this.errorMessage = Object.keys(c.errors).map((key) => this.validationMessages[key as 'required']).join(' ');