首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >类型-元素隐式具有'any‘类型,因为类型'any’不能用于索引类型‘type of EnumUrl’..ts(7053)

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

Stack Overflow用户
提问于 2022-11-01 11:43:55
回答 2查看 183关注 0票数 1

在非.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中消失了。没有错误。

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

EN

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",
    [Brands.yyy]: "www.bar.com",
};

function foo(brand: Brands) {
    return <a href={URL_MAP[brand]} />;
}

游乐场

票数 2
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74275394

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档