Microsoft/TypeScript — pull request #914 by ahejlsberg (2014-10-18 00:06:42+00:00)
Title: Parentheses in type literals

This change adds support for parentheses in type literals. For example:
```typescript
var a: (string | number)[];
var b: (() => string)[];
var b: (() => string) | (() => number);
var c: ((() => string) | (() => number))[];
```
I will be adding a formal definition of the grammer in the language specification, but basically the grammar requires parentheses in the following cases:

* When function and constructor types are used in union types.
* When union, function, and constructor types are used in array types.

Similar to expressions, parentheses may be used for clarity in other contexts even if they aren't necessary.