相关文章推荐
潇洒的斑马  ·  C#如何控制方法的执行时间,超时则强制退出方 ...·  1 年前    · 
儒雅的番茄  ·  mysql通过source后台运行导入大文件 ...·  2 年前    · 
可爱的香瓜  ·  万顺叫车平台可靠吗?_车主指南·  2 年前    · 
狂野的丝瓜  ·  Vue 给 div 设置滚动条 - 掘金·  2 年前    · 
爱跑步的花生  ·  海思平台freetype、SDL、SDL_T ...·  2 年前    · 
Code  ›  类型-元素隐式具有'any‘类型,因为类型'any’不能用于索引类型‘type of EnumUrl’..ts(7053)开发者社区
https://cloud.tencent.com/developer/ask/sof/107411840/answer/132401641
不敢表白的铁链
1 年前
首页
学习
活动
专区
工具
TVP 最新优惠活动
返回腾讯云官网
提问

问 类型-元素隐式具有'any‘类型,因为类型'any’不能用于索引类型‘type of EnumUrl’..ts(7053)

Stack Overflow用户
提问于 2022-11-01 11:43:55
EN

在非.tsx页面中,我们过去常常这样枚举:

代码语言: javascript
复制
const enumUrl= {
  xxx: [BRAND],
  yyy: [BRAND],
};

在.tsx页面中,我想使用 enum 。所以我创造了:

代码语言: javascript
复制
  enum EnumUrl {
    xxx = "https://example.com/",
    yyy = "https://example.net"
  }

在联合来文中:

代码语言: javascript
复制
  Visit <a href={EnumUrl[BRAND}} target="_blank" rel="noopener noreferrer">
    {EnumUrl[BRAND]}
  </a>

然而,它说:

代码语言: javascript
复制
Element implicitly has an 'any' type because expression of type 'any' can't be used to index type 'typeof EnumUrl'.ts(7053)

然后,我阅读了这个可能的解决方案: https://stackoverflow.com/a/41970976/1580094 ,并执行了以下操作:

代码语言: javascript
复制
  enum EnumUrl {
    xxx = "https://example.com/",
    yyy = "https://example.net"
var url : EnumUrl = EnumUrl[BRAND as keyof typeof EnumUrl];
 Visit <a href={url[BRAND}} target="_blank" rel="noopener noreferrer">
    {url[BRAND]}
  </a>

控制台日志: console.log(url);// https://example.com/ console.log(urlBRAND);//未定义的console.log(品牌);// xxx

但是这样做, <a 元素就完全从DOM中消失了。没有错误。

我做错了什么,我该如何解决呢?

2 183 0 票数 1
EN
reactjs
typescript

Stack Overflow用户

回答已采纳

发布于 2022-11-01 12:40:25

安恩博士似乎并不是你真正想要的。

哦,我明白了,乍一看,这就像是一个枚举:你有一组URL。这组URL可能实际上是一个枚举,类似于:

代码语言: javascript
复制
enum URLs {
  A = "www.foo.com",
  B = "www.bar.com"
}

问题来自于您如何使用这些值。因为您像使用映射一样使用"enum“:通过动态提供的键查找其中的值。Javascript/Typescript已经有了一个用于此目的的构造(实际上是两个),所以用enum来使用它

代码语言: javascript
复制
enum Brands {
    'xxx',
    'yyy'
// Note that www.foo.com and www.bar.com could be in
// *another* enum, and you could use the URL_MAP to
// connect the two enums. But either way you'll want the
// object for dynamic lookups
const URL_MAP = {
    [Brands.xxx]: "www.foo.com",
 
推荐文章
潇洒的斑马  ·  C#如何控制方法的执行时间,超时则强制退出方法执行-腾讯云开发者社区-腾讯云
1 年前
儒雅的番茄  ·  mysql通过source后台运行导入大文件sql_51CTO博客_source导入sql文件
2 年前
可爱的香瓜  ·  万顺叫车平台可靠吗?_车主指南
2 年前
狂野的丝瓜  ·  Vue 给 div 设置滚动条 - 掘金
2 年前
爱跑步的花生  ·  海思平台freetype、SDL、SDL_TTL的编译_freetype sdl_Wilburn0的博客-CSDN博客
2 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
Code - 代码工具平台
© 2024 ~ 沪ICP备11025650号