Abraham Suliemans, просмотрел твой гитхаб... В общем, я не уверен, что ты уже готов для фронта, у тебя очень, нет, ОЧЕНЬ мало жса в проектах. Пока что ты больше на верстальщика похож, чем на фронтера (без обид). Как минимум тебе явно надо закончить курс по вью (я не знаю насколько он у вас там развит, у нас он почти не используется) и сделать 1-2 сайта на нём.
Далее, тайпскрипт ты, как я вижу, не используешь, а без него, имхо, сейчас никуда (даже не представляю современные более менее крупные проекты на жс).
Более того, знание жс тоже подхрамывает.
Вот так писать в 2020 не лучшая идея, если ты это собираешься демонстрировать компании. const { fName, lName, email } = req.body;
А так же повсеместное использование фанкшанов, вместо стрелочных функций.
Бонусом отмечу отсутствие преттиера и еслинта. Конечно, тебе вряд ли придётся их настраивать будучи джуном, но умение с ними работать будет плюсом при собеседовании.
Но вообще код выглядит вполне неплохо.
Abraham Suliemans, ну, мой путь лежал через вышку (ИТ), так что явно не твоя дорога. Хотя сам факт учёбы в вышке (на тот момент последний курс) мне никак не помог попасть в компанию, зато без него я бы вряд ли получил первый проект.
Так вот, суть в том, что компания проводила бесплатный курс длинной в 4 недели по жс и я на него попал (там необходимо было уже понимать более-менее жс, чтобы на них попасть), по окончанию которого самым "перспективным и талантливым" позволили стать трейни за гроши на полгода. Будучи в трейни я попал в проект и далее меня уже полноценно взяли на джуна.
Откровенно говоря, не самый, далеко не самый эффективный путь, но на последнем курсе у меня была высокая нагрузка по учёбе, а будучи трейни за моей активностью практически не следили, поэтому для меня это был неплохой вариант.
Короче говоря, если уж совсем не получится найти работу, можешь попробовать этот путь, в ином случае не советую так делать.
П.с.: как в Бельгии / Германии не знаю, я в Прибалтике.
dmitry-toster, ты мне тут не "выкай". Правильное решение выше в комментарии имеет абсолютно тот же самый алгоритм, что и сам ответ. Слегка отличается лишь реализация, что никак не сказывается на результате.
G F, если не ошибаюсь, тут уже ограничения тса, он так глубоко в это дело не смотрит.
Мне сейчас очень неудобно это самому всё проверять, так что пока что есть такой вариант: (value[key] as string).match()
Собственно, у тебя нет проверки в коде какой тип у T[K], только в типе для key проверяешь. Иными словами сейчас ничего не мешает value[key] быть не строкой, что, естественно, приведёт к ошибке.
Хотя... Я тут вспомнил как в NextJS собирал хтмл + цсс всей страницы, и там как раз стильные компоненты использовались. Если можно аналогичным образом сделать с одним компонентом, то получится даже вполне цивилизованно.
Далее, тайпскрипт ты, как я вижу, не используешь, а без него, имхо, сейчас никуда (даже не представляю современные более менее крупные проекты на жс).
Более того, знание жс тоже подхрамывает.
Вот так писать в 2020 не лучшая идея, если ты это собираешься демонстрировать компании.
const { fName, lName, email } = req.body;
А так же повсеместное использование фанкшанов, вместо стрелочных функций.
Бонусом отмечу отсутствие преттиера и еслинта. Конечно, тебе вряд ли придётся их настраивать будучи джуном, но умение с ними работать будет плюсом при собеседовании.
Но вообще код выглядит вполне неплохо.