Typescript将解决方案拆分成几个项目

时间:2015-01-10 16:57:32

标签: visual-studio typescript

我在冻结之前使用了ScriptSharp。由于TypeScript是一种正在开发的OOP语言,我决定尝试它。我使用visual studio(如果重要的话)。我在ScriptSharp中制作简单的事情我遇到了麻烦。我没想到会那么困难。 我想做什么:

  • 使用模块AssemblyA创建项目A(类库项目)。 AssemblyA模块将具有 一些导出的类。
  • 使用模块AssemblyB创建项目B(类库项目)。 AssemblyB将参考 AssemblyA类型并将它们用作参数类型等。

你能给我一些如何使它工作或样品的指南吗?感谢。

更新: 什么是我可以添加对另一个打字稿项目的引用?如果将引用项目的输出复制到该项目,那将是很好的。

2 个答案:

答案 0 :(得分:2)

您可以将模块组织成类似命名空间的层次结构,而不是拥有程序集和模块:

内部模块

内部模块示例:

module AssemblyA {
    export module ModuleA {
        export class Example {

        }
    }   

    export module ModuleB {
        export class Example {

        }
    }
}

var x = new AssemblyA.ModuleA.Example();
var y = new AssemblyA.ModuleB.Example();

您还可以跨多个文件定义这些内部模块......

modulea.ts

module AssemblyA {
    export module ModuleA {
        export class Example {

        }
    }   
}

moduleb.ts

///<reference path="./modulea.ts" />
module AssemblyA {  
    export module ModuleB {
        export class Example {

        }
    }
}

app.ts

///<reference path="./modulea.ts" />
///<reference path="./moduleb.ts" />
var x = new AssemblyA.ModuleA.Example();
var y = new AssemblyA.ModuleB.Example();

外部模块

如果你想编写非常大的应用程序,可以使用外部模块(文件代表模块)。

assemblya / modulea.ts

    export class Example {

    }

assemblya / moduleb.ts

    export class Example {

    }

app.ts

import ModuleA = require('./assemblya/modulea');
import ModuleA = require('./assemblya/modulea');
var x = new ModuleA.Example();
var y = new ModuleB.Example();

答案 1 :(得分:1)

我找到了解决问题的方法:

在项目AssemblyA中:

  1. 指定“将javascript输出合并到文件中”为“.. \ AssemblyB \ AssemblyA.js”。
  2. 将生成声明文件设置为true。
  3. 在项目AssemblyB中:

    1. 在app.ts ///<reference path="../AssemblyA/AssemblyA.d.ts" />
    2. 中添加智能感知参考
    3. 在html中添加对生成文件的引用:<script src="AssemblyA.js"></script>
    4. 在项目B中,您可以使用任何名称空间别名(例如:import AssemblyANS2 = AssemblyA.NS2;)或完全限定名称。 将类放在不同的文件中,使用相同的模块名称,不需要引用ts文件。

      我不喜欢的是引用项目没有任何意义,但我希望在添加引用后自动完成步骤1-2-3-4。 当指定“将javascript输出合并为一个文件”时,“将javascript输出重定向到目录”设置也不起作用。我可以在第二个选项中指定文件路径也很奇怪。我希望这些设置与Path.Combine结合使用。 也许我的解决方案并不理想,但这正是我所需要的。随意提出更好的主意。