我已将项目拆分为多个bower模块,所有这些都需要引用underscore.d.ts文件
- bower_components
|- module_a
|- src
|- externl-commonjs.ts
| |- typings
| |- underscore
|- module_b
|- src
|- externl-commonjs.ts
|- typings
|- underscore
- src
|- externl-commonjs.ts
- typings
|- underscore
我可以自己成功编译module_a和module_b ...但是当它们在上面这样的项目中时,我会得到重复的标识符错误,因为每个外部模块中有多个/// <reference
s到underscore.d.ts文件。
你将如何解决这个问题,并为underscore.d.ts提供单一的事实来源。
答案 0 :(得分:0)
我已使用https://github.com/TypeStrong/grunt-dts-bundle解决了这个问题,{{3}}会从所有内部需要的代码创建d.ts但不会直接链接到任何外部定义。
然后,您可以在顶级项目中引用创建的包,并手动单独引用任何其他类型的依赖项。
答案 1 :(得分:0)
我解决这个问题的方法是使用///<amd-dependency path="foo" name="foo">
然后使用declare var foo;
在我的项目中获取amd模块(这是我最想要的)并且没有让Tsc跳线并进入重复的标识符地狱。他们最终会解决这个问题,但我最想要的是检查我的子项目并在我的父项目的上下文中编译它。一旦我安全地进入AMD,我很好。
使用grunt-exec将你的grunt ts任务链接在一起也很酷。通过这种方式,我可以在我的父项目上监视ts,并启动子项目中的ts任务。
答案 2 :(得分:0)
我遇到了同样的问题。一个真正的痛苦。 我是如何解决的:
一些很棒的背景文章:
看起来TypeScript 2.0添加了&#34; typeroots&#34;部分到tsconfig来帮助解决这个问题。见https://www.typescriptlang.org/docs/handbook/tsconfig-json.html