I've been looking for this for a while and your solution @asleepace is perfectly doing the job! 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) { Obje...