@MishaXXL

Как затипизировать массив, который является списком ключей объекта?

Подскажите, как затипизировать массив ENTITIY_LIST, зная все его значения Entity_Listили по факту из полученных значений через ENTITIES

interface Entity {
    name: string
    url: string
}

type Entity_List = 'cities' | 'companies' | 'countries'

const ENTITIES: Record<Entity_List, Entity> = {
    cities,
    companies,
    countries,
}

const ENTITIY_LIST = Object.keys(ENTITIES)


Суть проблемы в конструкции
{ENTITIY_LIST.map(item => {
    const entity = ENTITIES[item]
}


Где возможно есть элегантное и надежное решение без as
ENTITIES[item as keyof typeof ENTITIES]
  • Вопрос задан
  • 62 просмотра
Решения вопроса 1
WblCHA
@WblCHA
Универсальное решение:
const toKeys = Object.keys as <T extends object>(obj: T) => (keyof T)[];

const ENTITIY_LIST = toKeys(ENTITIES)


Решение на раз:
const ENTITIY_LIST = Object.keys(ENTITIES) as (keyof typeof ENTITIES)[]
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы