А что, написать правильный тип возврата сложнее было? Кастить зачем? Они и так наследуются от DisplayObject, зачем кастить лишний раз…
Только уж тогда

Код:
public function createComponent(componentType:String):DisplayObject {
switch (componentType) {
case 'TextInput':
return new TextInput();
break;
case 'TextArea':
return new TextArea();
break;
case 'RichTextEditor':
return new RichTextEditor();
break;
default:
return null;
}
}
з.Ы. С прописной буквы именуются классы, а не методы и переменные.