连接的js文件中的Typescript命名空间和重复标识符

时间:2016-02-21 14:15:58

标签: javascript angularjs module namespaces typescript

我是Typescript的新手,我正试图了解名称空间以及如何引用在单独文件中定义的接口。我来自.NET C#背景,所以我以前用来创建每个类和&接口在他们自己的文件中。

INationalRailService:

//// <reference path="../../../../typings/tsd.d.ts" />
/// <reference path="../../../../typings/app.d.ts" />

namespace Interfaces {
    export interface INationalRailService {
        getDepartures(city: String): ng.IPromise<IQueryResult>;
        getArrivals(city: String): ng.IPromise<IQueryResult>;
    }
}

IJourney.ts

namespace Interfaces {
    export interface IJourney {
        locationName: string;
        crs: string;
        via: string;
        futureChangeTo: string;
        assocIsCancelled: boolean;
    }
}

在tsd.d.ts中,我引用了我正在使用的框架,即Angular,JQuery,Typescript,toastr和angular-route。

在我的app.d.ts文件中,我引用了我创建的.ts文件

// Interfaces
/// <reference path="../src/app/NationalRailViewerApp/Interfaces/ITrainServices.ts" />
/// <reference path="../src/app/NationalRailViewerApp/Interfaces/INationalRailService.ts" />
/// <reference path="../src/app/NationalRailViewerApp/Interfaces/IParameters.ts" />
/// <reference path="../src/app/NationalRailViewerApp/Interfaces/IJourney.ts" />
/// <reference path="../src/app/NationalRailViewerApp/Interfaces/IQueryResult.ts" />

// Implementations
/// <reference path="../src/app/NationalRailViewerApp/Implementations/QueryResult.ts" />
/// <reference path="../src/app/NationalRailViewerApp/Implementations/Journey.ts" />
/// <reference path="../src/app/NationalRailViewerApp/Implementations/NationalRailService.ts" />
/// <reference path="../src/app/NationalRailViewerApp/Implementations/TrainServices.ts" />

我可以通过在文件顶部添加引用路径标记来获取各种类,控制器和服务以识别相关接口。

当我尝试将其转换为Javascript(ES5)时,我的问题就出现了。我的gulp任务运行器使用gulp-typescript将我的javascript输出到单个.js文件,使用{out:&#39; output.js&#39;配置选项。

然而,我收到大量关于存在重复标识符&#34;接口&#34;的警告。然后,我的结果角度模块将无法加载。

如果我通过一个公共命名空间使这些接口可用于我的其他文件,为什么这会导致我在生成的Javascript中出现问题?

我是否滥用了命名空间关键字或误解了它应该如何工作?如果我打算将生成的javascript连接到一个文件中,我可以不使用命名空间吗?

我已经尝试通过阅读以下文章来解决这个问题,

Typescript Namespaces

但我无法理解我应该用于此示例,名称空间或模块。

1 个答案:

答案 0 :(得分:0)

原来问题出在我的编辑器(VS Code)上。当我关闭并重新打开编辑器后,对我的项目进行了大量的构建,重复的错误就消失了。

无论如何,谢谢你的回复。