2) Выводил изображение на другой экран - баг не смог отловить
первый вариант не прокатил, TS не понимает прикол с never в ключах.
type Parsers = Omit<{
[K in keyof T]: (str: string) => T[K];
}, 'id'>;
type Parsers<T extends object> = {
[K in keyof T as K extends 'id' ? never : K]: (str: string) => T[K];
}
// or
type Parsers<T extends object> = {
[K in Exclude<keyof T, 'id'>]: (str: string) => T[K];
};
Или воспользоваться каким-нибудь рантайм валидатором.