Function accepts an object and then returns an object in which fields are types and values are the amount of data of this type in the object-argument. If there is no data of a certain type in the source object, it will not be present in the resulting object.
Source object: { test: 134 }
Resulting object: { number: 1 }
Source object: { test: undefined, anotherField: [], yetAnother: [undefined] }
Resulting object: { undefined: 1, array: 2 }
Source object: { test: undefined, anotherField: [], undefined: null }
Resulting object: { undefined: 1, array: 1, null: 1 }