Typescript 报“string”类型不能用于索引类型的错误
使用typescript来进行类型定义和约束时,经常会出现类似报错:元素隐式具有“any”类型,因为“string”类型的表达式不能用于索引类型;如:定义一个请求方式与对应的className的字典映射const methodMap = {GET: style["get"],POST: style["post"],PUT: style["put"],PATCH: style["patch"],DE
·
使用typescript来进行类型定义和约束时,经常会出现类似报错:元素隐式具有“any”类型,因为“string”类型的表达式不能用于索引类型;
如:定义一个请求方式与对应的className的字典映射
const methodMap = {
GET: style["get"],
POST: style["post"],
PUT: style["put"],
PATCH: style["patch"],
DELETE: style["delete"],
OPTIONS: style["options"],
HEAD: style["head"],
CONNECT: style["connect"]
}
在使用的时候,根据实际的请求方式,设置不同的类名;如果单纯这样使用,编译器会进行报错:
className={methodMap[method]}
这是因为传入的method字段,在编译器看来是一个字符串,而不是【GET、POST...】这几个值的一种,因此类型是不一致的。这个时候要正确使用,就需要显示声明传入的值与这些值一致:
methodMap[method as keyof typeof methodMap]
更多推荐
已为社区贡献1条内容
所有评论(0)