ThirdMapped is {} that is not empty object but object, anything not null or undefined.
You can do something you can try to solve it with: type EmptyObject = Record<string, never>; type NormalizeEmpty = keyof T extends never ? EmptyObject : T;
gl