我正在尝试将项目从 Angular 1 转换为 Angular 2。

这是一个带有一些通用代码的客户端和服务器项目(所以我把它放在一起)。我想在客户端使用 Angular 2,所以我遵循了 ng2 QuickStart 。我目前正在尝试在我的项目中构建它。

我正在使用 TSD 来管理我的依赖项类型。其中一些依赖项如 socket.io 依赖于 node.d.ts
我的问题是 angular2 已经公开了 node.d.ts 并创建了一个环境定义,所以当我想将 TSDangular2 一起使用时,我会在两个定义之间产生冲突:typings\node\node.d.ts(961,9): error TS2300: Duplicate identifier 'path'.
这是我的吞咽任务:

gulp.task('build.conflict', function(){

  var browserProject = tsc.createProject('browser.tsconfig.json', {
    typescript: typescript
  });

  var src = [
    'src/browser/**/*.ts',
    'typings/**/*.d.ts' // commenting out this line results in unknown modules
  ];

  var result = gulp.src(src)
    .pipe(tsc(browserProject));

  return result.js
    .pipe(gulp.dest('build/browser'));

});

我还设置了 a simple repository 来演示我的问题。
如何在保留 TSD 类型的同时解决此错误。 (最好的解决方案是防止 angular2 暴露其内部 node.d.ts )

最佳答案

如果您开始使用 Typings,则只能允许从 *.d.ts 的浏览器依赖项中发现 tsconfig.jsonHere 是 John Papa 的 NgConf 演示中的一个很好的例子。

更新:这已过时,每个 Typings > 1.0.0。

关于angularjs - Angular2 和 TSD 的 "Duplicate identifier"错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34207110/

10-16 23:13