By directly calling the createClassFromType method when declaring the actual class most of the boilerplate is avoided: function classFromProps<T>() { return class { constructor(props: T) { Object.assign(this, props); } } as ({new (args: T): T}); } type PersonProps = { firstname:...