dmitry-toster, ты мне тут не "выкай". Правильное решение выше в комментарии имеет абсолютно тот же самый алгоритм, что и сам ответ. Слегка отличается лишь реализация, что никак не сказывается на результате.
G F, если не ошибаюсь, тут уже ограничения тса, он так глубоко в это дело не смотрит.
Мне сейчас очень неудобно это самому всё проверять, так что пока что есть такой вариант: (value[key] as string).match()
Собственно, у тебя нет проверки в коде какой тип у T[K], только в типе для key проверяешь. Иными словами сейчас ничего не мешает value[key] быть не строкой, что, естественно, приведёт к ошибке.
Хотя... Я тут вспомнил как в NextJS собирал хтмл + цсс всей страницы, и там как раз стильные компоненты использовались. Если можно аналогичным образом сделать с одним компонентом, то получится даже вполне цивилизованно.
Александр Зелицкий, просто начни уже что-то делать. Да, не знаешь как, и что? Что случится страшного, если сделаешь что-то не так? Ничего. Начни делать хоть как-то, понимание придёт само.
Допустим есть я, и? Европа, мягко говоря, разная. Ты бы страны уточнил.