TypeScript引用应用程序中的其他定义 - 重复标识符错误

时间:2016-01-08 20:02:19

标签: angularjs typescript gulp

将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中。我有什么选择来处理这个问题?

1 个答案:

答案 0 :(得分:0)

由于您的打字稿源文件存在于同一个项目中,并且您在Angular控制器ts文件中也引用了声明ts文件,因此您遇到了此问题。

我通常使用的解决方法是创建一个reference.ts文件,该文件引用了所有自定义代码,并在角度控制器ts文件的顶部引用该reference.ts。在这种情况下,您不需要声明ts文件,因为您拥有打字稿源本身。

声明文件可用于与其他项目共享您的定义,这些项目在编译时没有实际的打字稿源,但在运行时将js文件合并在一起。