Edit: note that those will need to be included in the compilation. Make sure you include those types (you might need to add a reference to them in your hxml or reference them somewhere. You also need to make sure dce (dead code elimination) doesn’t get rid of them; that can be done by adding @:keep to those types.
If you don’t want to rely on reflection, a simple Map can work:
var constructors = [
"Desc1" => Desc1.new,
"Desc2" => Desc2.new,
// etc
];
var s:String = ...;
// maybe check that constructors contains s ?
var o:Base = constructors[s]();
You can use macros to generate the constructors expression automatically, e.g. for all classes in a given package. Since all the child classes are mentioned in the code, there should be no need to annotate them with @:keep.