Angular2 和 TSD 的“重复标识符”错误

Posted

技术标签:

【中文标题】Angular2 和 TSD 的“重复标识符”错误【英文标题】:"Duplicate identifier" errors with Angular2 and TSD 【发布时间】:2016-03-16 09:31:09 【问题描述】:

我正在尝试将项目从 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 任务:

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 并且能够设置一个快速修复。一旦它更稳定,我会发布答案。 所以我认为它从未变得更稳定? 仍在等待官方修复。 Angular 的 Github 上存在一些未解决的问题,而 TS 目前似乎正在使用 Typings,所以我希望我们能尽快得到一个可靠的解决方案。 快速修复会很酷:) 【参考方案1】:

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

更新:根据 Typings > 1.0.0,这已过时。

【讨论】:

感谢您提醒我这个问题。我实际上成为了打字贡献者:实际上,自 1.0.0 版以来,您的答案似乎已经过时了新结构->您应该只添加整个打字目录 太棒了,感谢您的提醒!我添加了通知。

以上是关于Angular2 和 TSD 的“重复标识符”错误的主要内容,如果未能解决你的问题,请参考以下文章

使用 Visual Studio 2008 数据库项目 GDR2 时出现“模型已有元素”错误 (TSD04105)

错误 TS2300:重复标识符“导出 =”

令人困惑的“重复标识符”打字稿错误消息

测试类型脚本应用程序出现许多重复标识符错误

记一次pthread_key_create导致的__nptl_deallocate_tsd段错误

错误 TS2300:重复标识符“RequestInfo”