It would, in a sense, be more logical to first choose a data structure appropriate to the problem and then look around for, or construct with a kit of tools provided, a language suitable for manipulating that data structure. Perhaps the central problem we face in all of computer science is how we are to get to the situation where we build on top of the work of others rather than redoing so much of it in a trivially different way. Science is supposed to be cumulative, not almost endless duplication of the same kind of things. The road from untyped to typed universes has been followed many times, in many different fields, and largely for the same reasons. As soon as we start working in an untyped universe, we begin to organize it in different ways for different purposes.
Types arise informally in any domain to categorize objects according to their usage and behaviour.
The classification of objects in terms of the purposes for which they are used eventually results in a more or less well-defined type system. Types arise naturally, even starting from untyped universes. Untyped universes of computational objects decompose naturally into subsets with uniform behaviour. Sets of objects with uniform behaviour may be named and referred to as types. After a valliant organizationn effort, then, we may start thinking of untyped universes as if they were typed.