TS2538:类型“唯一符号”不能用作索引类型

Posted

技术标签:

【中文标题】TS2538:类型“唯一符号”不能用作索引类型【英文标题】:TS2538: Type 'unique symbol' cannot be used as an index type 【发布时间】:2019-04-23 14:04:10 【问题描述】:

我有这个:

const symbols = 
   typeMap: Symbol('type.map')


interface LangMap 
  [key: string]: string | true,
  golang: string,
  typescript: string,
  java: string,
  swift: string


export const setTypeMap = function(v: LangMap) : LangMap
  v[symbols.typeMap] = true;
  return v;
;

我收到此错误:

有谁知道这个错误是关于什么的?我在 tsc 版本 3.1.6

【问题讨论】:

[key: string]? 我试过这个[key: string | symbol]也没有用 不幸的是,这个问题似乎仍然很突出(实际上我是被你在 GitHub 上的评论引导到这里的)。我刚刚联系了一些 TS 维护人员,看看是否有什么可以做的。 有人有这方面的更新吗? github.com/microsoft/TypeScript/issues/1863@vvMINOvv 【参考方案1】:

我可怜的解决方法:

const bar: Record<any, string> = ;
const FOO = Symbol('foo');

// eslint-disable-next-line @typescript-eslint/no-explicit-any
bar[FOO as any] = 'sad';

【讨论】:

以上是关于TS2538:类型“唯一符号”不能用作索引类型的主要内容,如果未能解决你的问题,请参考以下文章

TypeScript - ts(7053):元素隐式具有“任何”类型,因为“字符串”类型的表达式不能用于索引

类型“键”不能用于索引类型“对象”

Typescript 从具有泛型类型的对象索引调用函数

如何修复 Element 隐式具有“任何”类型,因为“字符串”类型的表达式不能用于索引类型?

TS基础

不能用作 JSX 组件。它的返回类型“void”不是有效的 JSX element.ts(2786)