I would say because type is not defined in FormField and is not implemented in all of the inheriting classes. For example, TextArea does not generally have a type attribute. I could be missing something though...