我是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连接到一个文件中,我可以不使用命名空间吗?
我已经尝试通过阅读以下文章来解决这个问题,
但我无法理解我应该用于此示例,名称空间或模块。
答案 0 :(得分:0)
原来问题出在我的编辑器(VS Code)上。当我关闭并重新打开编辑器后,对我的项目进行了大量的构建,重复的错误就消失了。
无论如何,谢谢你的回复。