NOTE: I don't have a very good understanding of the more advanced stuff in TS, but I managed to hack this togheter. There's probably a better way to this. :)
The SnakeToCamel
generic is inspired by this split generic from typescriptlang.org.
type Split<S extends string, D extends string> =
string extends S ? string[] :
S extends '' ? [] :
S extends `${infer T}${D}${infer U}` ? [T, ...Split<U, D>] : [S];
My changes and ObjectSnakeToCamel
is from reading the TS docs.