Creating a reusable generic base class that allows for object construction in TypeScript, much like you might see with named parameters in Dart