Enhanced static checking in Intellishell
The scripting process in Intellishell would be MUCH faster with static checks that identifiers have a value.
For example the editor does catch the following very, very common mistake;
// declaring some variable
const someVar = db.getCollection('someColletction').findOne();
// erroneously referencing some other (undefined) variable since the user misspelled it
print(someVarr);
Even worse, the misspelled identifier could have a value stored in the interpreter (from a previous execution) even if it doesn't appear in the current version of the script. This is a problem since the code could actually execute, and dangerously give unexpected results (for example, the user updates documents that they didn't mean to update). I understand that the intention is to work like other interpreters, but in my opinion, the benefit of forcing everything to be explicit (the script only "knows" about what is defined in a particular script in a given executive) vastly, vastly outweighs any benefit of allowing user-defined values to be stored in the interpreter.
Also the editor doesn't statically catch references to undefined methods of the MongoDB collection objects, for example:
db.getCollection('someColletction').udpate(filter, update); // misspelled method
I feel like 90% of my errors are the result of little misspellings which are difficult to catch. Anything that can be done to catch these would hugely improve the scripting experience!