最近我一直在使用 TypeScript,一切都很好,我真的非常喜欢它......让 JavaScript 再次可用! :)
我们尝试遵循与任何 .net 项目背后相同的想法,例如每个类/接口(interface)一个文件
module Infrastructure {
export interface IBaseViewModel {
addOrRemoveClass(selector: string, className: string);
}
}
我们遇到的问题是 - 没有包含所有依赖文件?在运行时。
如果您查看这个文件,它是我们应用程序的主要入口点,我会在创建新的 ViewModelBuilder 时遇到未定义的错误
module Infrastructure {
export class Fusion {
constructor() {
this.vmBuilder = new ViewModelBuilder();
this.setApplicationDefaults();
this.start();
}
private vmBuilder: IViewModelBuilder;
private start() {
this.vmBuilder.process();
}
private setApplicationDefaults() {
$.pnotify.defaults.styling = "jqueryui";
$.pnotify.defaults.history = false;
$.pnotify.defaults.auto_display = false;
}
}
}
在文件的顶部我们有
/// <reference path="../Typings/jquery.d.ts" />
/// <reference path="ViewModelBuilder/ViewModelBuilder.ts" />
/// <reference path="ViewModelBuilder/IViewModelBuilder.ts" />
还有 ViewModelBuilder
module Infrastructure {
export class ViewModelBuilder { }
}
所以问题是 - 继续前进的最佳方式是什么?我们怎样才能使其他类声明起作用?我们的项目将大幅增长,我们可能有 100 个 View 模型来表示每个 View (该项目是从 Windows 窗体到 Web 的转换)
任何帮助都会很棒,因为我们真的需要克服它并继续前进! :)
最佳答案
我写了关于 getting the right set up for TypeScript其中的一个想法会对您有所帮助 - 我最初是从 Mark Rendle 那里得到这个想法的。
想法是创建一个名为 references.ts
的文件,并在其中列出所有依赖项。有点像这样:
/// <reference path="modulea.ts" />
/// <reference path="moduleb.ts" />
/// <reference path="modulec.ts" />
/// <reference path="moduled.ts" />
/// <reference path="modulee.ts" />
然后您可以在所有 TypeScript 文件的顶部简单地引用此文件:
/// <reference path="references.ts" />
module ModuleA {
export class MyClass {
doSomething() {
return 'Hello';
}
tester() {
var x = new ModuleB.MyClass();
}
}
}
references.ts
文件的作用类似于 .NET 项目的 References 文件夹。
另一个建议,与此设置一起工作得很好,是使用 --out
标志编译单个 JavaScript 文件,从 app.ts
开始. TypeScript 编译器遍历所有依赖项并为所有生成的 JavaScript 计算出正确的顺序。
tsc --out final.js app.ts
与在任何地方手动引用特定文件相比,此策略将更好地适应您的程序。
关于javascript - 组成 Type Script 项目的多个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15335474/