индексная подпись ключа в объекте - PullRequest
0 голосов
/ 30 марта 2019

у меня есть следующий код машинописи

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'] = []

Яне уверен, как добавить подпись индекса к типу карты

1 Ответ

2 голосов
/ 30 марта 2019

Map s не поддерживают синтаксический индекс, как вы ожидали.Доступ к ним осуществляется с использованием таких методов, как .has(key), .get(key) и .set(key, value):

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