Typescript. Как получить данные элемента перечисления как тип

#typescript

#typescript

Вопрос:

Например, у меня есть тип перечисления Currency . Я не могу его изменить, потому что он автоматически строится на схеме graphql. Я хочу использовать его для своих данных, но я не знаю, как это сделать.

 enum Currency {
  rub = 'RUB',
  usd = 'USD',
  eur = 'EUR',
}

const data: { currency: Currency[keyof typeof Currency] } = {
  currency: 'RUB',
};
  

Ошибки

 TS2339: Property 'eur' does not exist on type 'Currency'.
TS2339: Property 'rub' does not exist on type 'Currency'.
TS2339: Property 'usd' does not exist on type 'Currency'.
  

Ответ №1:

Я не уверен, что возможно сделать именно то, что вы пытаетесь сделать, но, скорее всего, вы захотите сделать что-то вроде этого:

 const data: { currency: Currency } = {
  currency: Currency.rub,
};
  

Обычно так используются перечисления (всегда явно ссылаясь на перечисление при получении одного из его значений).

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

1. Спасибо! Я думаю, вы правы. Я приму ваш ответ, когда stackoverflow позволит это