i think mixing the use of 'xtype' and 'alias' is confusing, and (knowing how I write code) leads to ugly syntax errors. To me, 'xtype' means "Instance component of this type", but in 'Ext.define' it means "Create a new component (alias) with this name/type".
And, if you start by writing some code with a lazy def :
then later decide that this would be better as it's own component, a less than careful cut/paste, or rewrite would produce this:
So you've gone either clobbered the 'button' xtype, or generated a confusing error.
It least in Ext 3, you have the clear distinction by using 'Ext.reg' to create the alias. Perhaps sticking to just 'alias' or creating a new config item like 'regXtype' would make more sense ?