Помогите разобраться с enum TypeScript

Всем привет. Я пишу приложение на react + typescript. И, я сделал хук, который возвращает мне роуты для меня с определенным именем. У меня есть enum Menus, в котором содержать названия всех меню. И, когда я вызываю метод для получения массива нужных мне роутов, я хочу иметь подсказки в виде строк( useMenu(['<Вот тут>', '<Вот тут>']) ). Подсказки появляются, но когда я пишу, допустим useMenu(['user']), то оно подсвечивается как ошибка, а если useMenu([Menus.User]), то все норм. Но я хочу как-то использовать первый вариант. Есть ли вообще такая возможность?

export enum Menus {
Main = 'main',
User = 'user',
Admin = 'admin',
}

import {Menus, ROUTES} from "../appRouter";
import {IRoute} from "../appRouter/routes";


const useMenu = (names?: Menus[]): IRoute[] => {
    return !names ?
        ROUTES:
        ROUTES.filter(({menuName}) => menuName && names.includes(menuName));
}

export default useMenu;

введите сюда описание изображения

введите сюда описание изображения


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

Автор решения: Grundy

enum считаются отдельным типом. Поэтому им нельзя присваивать просто строки.

Если необходимо разрешить передавать ограниченное количество строк, можно воспользоваться template literal types. Они представляют из себя union type из разрешенных значений, например:

'user' | 'admin' | 'main'
→ Ссылка