Allow duplicate identifiers across declarations

This has been one common source of duplicate definition errors.Multiple declaration files defining the same members on interfaces.

TypeScript 2.0 relaxes this constraint and allows duplicate identifiers across blocks, as long as they have identical types.

Within the same block duplicate definitions are still disallowed.

Example

  1. interface Error {
  2. stack?: string;
  3. }
  4. interface Error {
  5. code?: string;
  6. path?: string;
  7. stack?: string; // OK
  8. }