Как задать тип для аргумента функции из динамически сформированного массива?

Есть класс

class Constants {
  static LocaleCodes = {
    English: {
      code: 'en',
      value: 'English',
    },
    Russian: {
      code: 'ru',
      value: 'Русский',
    },
    Chinese: {
      code: 'ch',
      value: '中国人',
    },
  };

  static Locales = Object.keys(I18nConstants.LocaleCodes).map(
    (locale) => I18nConstants.LocaleCodes[locale].code
  );
}

Хочу создать функцию которая будет принимать, в качестве аргумента, только набор элементов из массива Constants.Locales

Прочитал что можно сделать вот так:

  static Locales = Object.keys(I18nConstants.LocaleCodes).map(
    (locale) => I18nConstants.LocaleCodes[locale].code
  ) as const;

и в самой функции написать

someFoo(lang: typeof Constants.Locales[number]) {
....
}

Такой способ действительно работает, если массив статический, но как указать тип из динамически сформированного массива, не представляю.

Может быть есть какой-то способ, чтобы указать тип из объекта LocaleCodes?

Что-то вроде:

someFoo(lang: typeof Constants.LocaleCodes[key]['code']) {
....
}

Ответы (0 шт):