Yeah, I had to check the code to understand what was going on here... and then do some more research.

It comes down to this:

http://www.typescriptlang.org/Content/TypeScript%20Language%20Specification.pdf

```bnf
Type: 
  PredefinedType
  TypeReference 
  TypeQuery 
  TypeLiteral 

PredefinedType: 
  any 
  number 
  boolean 
  string 
  void 

TypeReference: 
  TypeName TypeArgumentsopt

TypeName: 
  Identifier 
  ModuleName . Identifier 

ModuleName: 
  Identifier 
  ModuleName . Identifier 
```