That code has nothing to do with TypeScript. First of all, it's a side-effect of JavaScript syntax, and it's also a really strange way to write code. This author's code doesn't seem simple or easy to reason about to me, partially because it's hard to read.
CAR means Content of Address part of Register and CDR means Content of Decrement part of Register. They were tied to the 36-bits nature of the first LISP machines, with 15 bits to CAR and 15 bits to CDR (plus 2 bits for tags IIRC).
So its not just naming keys in a structure, those had a very low level meaning related the the implementation of the CONS cell structure in hardware.
I agree. And it seems to me that it wasn't language issue, but lack of encapsulation. I also don't find those cons of using CoffeeScript convincing enough. Have these guys tried TDD? If you use TDD you'll probably find accidental overwriting out-of-scope variable in a matter of seconds. Because you should never rely on language syntax.
Once async/await support make it into TypeScript, it should be a lot cleaner dealing with promises. It's already in Babel, and imho I'm fine without the typing as long as modules are minimalistic, organized and straight forward.