-90|-89|-88|...
преподавателю это может не понравиться
И threads ноды - это не чистая многопоточность. В браузере тоже воркеры есть.
Я специально отсеял юнионы, иначе у тебя на выходе будет не строка и ты не сможешь просто так использовать методы строки, что очевидно.
type ObjStr<T> = {[K in keyof T as T[K] extends string ? K : never]: T[K] & string};
я бы тег li оставил в родительском компоненте, а в отдельный вынес только его содержимое. Таким образом жёстко связанные в семантике html теги не будут разнесены потенциально по разным файлам.
А тип ErrorMix "почти ничего" не добавляет, у него только поле-симбол, недоступное снаружи и уникальное.