Issue 1:
I'm using typescript 1.7.5, typings 0.6.9 and angular 2.0.0-beta.0.

How can I get rid of the typescript compile error messages Duplicate identifier due to typings definition files?

The Duplicate identifier error occurs in the definition files of the following directories:

node_modules/angular2/typings/es6-shim/es6-shim.d.ts
node_modules/angular2/typings/jasmine/jasmine.d.ts
node_modules/angular2/typings/zone/zone.d.ts
typings/browser/ambient/es6-promise/es6-promise.d.ts
typings/browser/ambient/es6-shim/es6-shim.d.ts
typings/browser/ambient/jasmine/jasmine.d.ts
typings/browser/ambient/karma/karma.d.ts
typings/browser/ambient/zone.js/zone.js.d.ts

What's the compiler doing in node_modules/angular2 directory since I excluded it in tsconfig.json?

I also posted this question on StackOverflow

tsconfig.json

{
"compilerOptions": {
"target": "es5",
"module": "system",
"moduleResolution": "node",
"sourceMap": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"removeComments": false,
"noImplicitAny": false
},
"exclude": [
"node_modules",
"typings/main",
"typings/main.d.ts"
]
}

They are gone if I change the exclude part of tsconfig.json:

"exclude": [
"node_modules",
"typings"
]

But then after adding the following I get again the same Duplicate identifier compile errors:

/// <reference path="../../typings/browser.d.ts" />

typings.json

{
"name": "example-mean-app-client",
"dependencies": {},
"devDependencies": {},
"ambientDependencies": {
"bootstrap": "github:DefinitelyTyped/DefinitelyTyped/bootstrap/bootstrap.d.ts#4de74cb527395c13ba20b438c3a7a419ad931f1c",
"es6-promise": "github:DefinitelyTyped/DefinitelyTyped/es6-promise/es6-promise.d.ts#830e8ebd9ef137d039d5c7ede24a421f08595f83",
"es6-shim": "github:DefinitelyTyped/DefinitelyTyped/es6-shim/es6-shim.d.ts#4de74cb527395c13ba20b438c3a7a419ad931f1c",
"jasmine": "github:DefinitelyTyped/DefinitelyTyped/jasmine/jasmine.d.ts#dd638012d63e069f2c99d06ef4dcc9616a943ee4",
"karma": "github:DefinitelyTyped/DefinitelyTyped/karma/karma.d.ts#02dd2f323e1bcb8a823269f89e0909ec9e5e38b5",
"karma-jasmine": "github:DefinitelyTyped/DefinitelyTyped/karma-jasmine/karma-jasmine.d.ts#661e01689612eeb784e931e4f5274d4ea5d588b7",
"systemjs": "github:DefinitelyTyped/DefinitelyTyped/systemjs/systemjs.d.ts#83af898254689400de8fb6495c34119ae57ec3fe",
"zone.js": "github:DefinitelyTyped/DefinitelyTyped/zone.js/zone.js.d.ts#9027703c0bd831319dcdf7f3169f7a468537f448"
}
}

Issue 2:
After updated TS to 1.5-beta, my code failed to compile. My code uses a few ES6 APIs such as Set, but the --target is still ES5. It seems TS 1.5-beta removed those ES6 APIs from lib.d.ts when targeting ES5. I think this is a bad change.

ES6+'s new language features and new APIs are very different stories. New APIs are shipped earlier in browsers, and can be polyfilled; language features are shipped later, and can't be polyfilled.

My code is targeting modern browsers, so relying on Set etc. is not a problem. But for obvious reason I can't specify --target ES6 for tsc because ES6 new language features are not enabled by default in all browsers.

We may have two options to solve this problem:

Restore all ES6+ APIs in lib.d.ts. This may be a short-term solution.

Add a --source option to tsc to specify a "source code API level", values are same as --target. This is similar to javac -source option. So I can invoke tsc --source ES6 --target ES5. This may be a long-term solution.