DomEvent-s have their types lazily created, because they're registered in a global, er, registry, to easily match event types (from the browser, evt.type, i.e. a string such as "click", "mouseover", etc.) to DomEvent.Type instances.
Most other events don't need this, but some of them could benefit from it: some events have a static fire() helper method; when invoked, if the TYPE private field hasn't been initialized, it means getType() hasn't been called, i.e. no handler has been registered for the event, so the fire() help method can exit early, without event creating an event instance and calling the event bus.