Can this kind of task be accomplished?
type GeometryParams = {
rectangle: { x:number, y:number, width:number, height:number},
circle: { x:number, y:number, radius:number }
};
type GeometricShapes = {
[shapeName in keyof GeometryParams]:{
[paramName in keyof GeometryParams[shapeName]]: number
}
};