In Tiled 1.8 the ability to create custom property types was added, this feature was further expanded on in the Tiled 1.9 update.
You can read more about the feature here: https://doc.mapeditor.org/en/stable/manual/custom-properties/#custom-types
I haven't given much thought to what this implementation looks like in pytiled-parser, so I will update this issue with the idea for how this will work once I've done that. This issue is intended to be the primary focus of pytiled-parser 2.3