TypeScript: не удается получить доступ к объекту по переменному ключу

#javascript #typescript

Вопрос:

Здесь мой код выглядит так:

 
export const EMOJI_NAME_KEY = "n";
export const EMOJI_UNICODE_KEY = "u";


export interface Emoji {
  [EMOJI_NAME_KEY]: string[];
  [EMOJI_UNICODE_KEY]: string;
}

const emoji: Emoji = {
   [EMOJI_NAME_KEY]: 'thumb',
   [EMOJI_UNICODE_KEY]: 'some_unicode_key'
}

 

Теперь всякий раз, когда я пытаюсь получить доступ к значению из типа Emoji, я получаю сообщение об ошибке. Например:

 console.log(emoji[EMOJI_NAME_KEY]) // returns error in the terminal like below
 

Элемент неявно имеет тип ‘any’, поскольку выражение типа
‘string’ нельзя использовать для индексации типа ‘Emoji’.
Для типа ‘Emoji’ не найдена индексная подпись с параметром типа ‘string’

Комментарии:

1. Вы должны объявить emoji как const emoji: Emoji = { [EMOJI_NAME_KEY]: ['thumb'], [EMOJI_UNICODE_KEY]: 'some_unicode_key' } . Обратите внимание на массив для ключа Name

2. Вот ваш код в TypeScript Playground с комментариями о том, как это исправить.