By now the class codec accepts an associative array of key-codec pairs.
It works but has a big problem: how to represent an intersection of properties?
Let's suppose to have
type T = {
a: string
} & (
| { b: null, c: null }
| { b: number, c: boolean }
)
If the class decoder accepted a decoder for properties, then an instance of this type would be decoded using a single decoder, not a union of two similar ones.