将Typescript与Angular项目一起使用。在每个角度控制器的顶部,我经常需要引用其他服务,所以我也需要它们的定义。例如,这里是一个控制器的前几行,它引用了一些服务。
/// <reference path="../../../typings/tsd.d.ts" />
/// <reference path="../shared/checkoutstaticcontent.ts" />
/// <reference path="../../common/services/settingsservice.ts" />
/// <reference path="reviewcartservice.ts" />
我试图在我的gulp构建过程中添加一些东西,这样每个控制器只需要引用一个.ts定义。
/// <reference path="../../../typings/tsd.d.ts" />
tsd.d.ts文件引用了角度,下划线和其他第三方库定义。我希望它还引用一个文件myapp.d.ts,它包含我的所有自定义应用程序定义。所以我添加了以下gulp任务来生成myapp.d.ts:
var ts = require('gulp-typescript');
gulp.src('Scripts/**/*.ts')
.pipe(ts({ target: 'ES5', declaration: true }))
.dts.pipe(concat('myapp.d.ts'))
.pipe(gulp.dest('typings'))
.on('error', errorHandler);
这在创建合并定义文件方面非常有用。问题是现在我收到一个错误,即检测到重复的定义,因为文件定义本身就存在,并且也存在于引用的myapp.d.ts中。我有什么选择来处理这个问题?
答案 0 :(得分:0)
由于您的打字稿源文件存在于同一个项目中,并且您在Angular控制器ts文件中也引用了声明ts文件,因此您遇到了此问题。
我通常使用的解决方法是创建一个reference.ts文件,该文件引用了所有自定义代码,并在角度控制器ts文件的顶部引用该reference.ts。在这种情况下,您不需要声明ts文件,因为您拥有打字稿源本身。
声明文件可用于与其他项目共享您的定义,这些项目在编译时没有实际的打字稿源,但在运行时将js文件合并在一起。