I will say that we are overhauling the code editing experience that will be out in our next 3.0 beta. You will see some of the things that you want.
To further your specific example, let me explain a bit further as you've pointed out a good place where JS Tooling cannot provide all of the type info you want.
Your original code was:
Let's break that down:
To a human reader it becomes pretty easy to see that you are returning an Ext.tab.Panel. A tool could only possibly know that you are returning a Ext.Component. Luckily setDisabled is part of component and could have been provided by autocomplete (but only with specific knowledge that the framework returned an array of Ext.Component's from a Ext.ComponentQuery.query
var component = Ext.ComponentQuery.query('#myTabPanel');
With this knowledge it's possible that we could tell you that you are trying to call a setDisabled method on an array. While we can assume this is probably incorrect it is completely possible that you could add a method to an array.
Try to run the following code:
var abc = [1,2,3];