对象中键的索引签名

时间:2019-03-30 08:35:19

标签: typescript index-signature

我有以下打字稿代码

type MapOfErrors = Map<string, Error[]>
interface GatheredErrors {
  'dev': MapOfErrors
  'prod': MapOfErrors
  [key: string]: MapOfErrors
}

const errors: GatheredErrors = {
  dev: new Map<string, Array<Error>>(),
  prod: new Map<string, Array<Error>>()

}

 errors[ctx.env]['something'] = []

其中ctx是上下文类型

interface Context {
  token: string
  env: "dev" | "prod"
}

我收到以下错误

src/index.ts:136:5 - error TS7017: Element implicitly has an 'any' type because type 'Map<string, Error[]>' has no index signature.

136     errors[ctx.env]['something'] = []

我不确定如何将索引签名添加到Map类型

1 个答案:

答案 0 :(得分:2)

Map不像您期望的那样支持索引语法。使用.has(key).get(key).set(key, value)等方法可以访问它们:

errors[ctx.env].set('something', [])