If you start to decompose a large thing into small pieces from the beginning, maybe you will solve the problem of excluding properties from an object from another side. Depending on where you use it, it is interpreted as a value or as a type.
Dictionaries: An arbitrary amount of properties whose names are not known at development time. There are several types that can solve this problem.
As an aside, Maps are usually a better choice for dictionaries, anyway.
Similarly: Normal variables exist at the object level. Normal variables are introduced via const, let, etc.
You can define styles as a function that takes a theme as an argument and returns the future className with correspondent styles and you want to define a type for this function: Adding type for styles function in every component file You notice that it can become very annoying to add these as CSSProperties for every style object.
Plus I will show you a way to stay away from all the overhead static types might imply in the next section.