引用requirejs优化的typescript类

时间:2015-04-14 11:54:04

标签: requirejs typescript

我正在使用AMD编译而不是打字稿内部模块。

我有一个充满了typescript类和接口的项目,我已经成功地优化成了一个完整的requirejs定义的requirejs文件。

例如

A级{      ...    }    出口A;

其他类引用该文件并导入该类。

在另一个项目中,我使用bower引入R.js优化文件并在require_config.js中引用它并加载文件ok。

在这个其他项目中,我希望B类引用A类,但B类不在文件路径中。

我需要做什么?我想我需要生成我在B类中引用的d.ts文件,但是当ClassA不在第二个项目的文件路径中时,如何导入ClassA = require(“ClassA”)。

詹姆斯

2 个答案:

答案 0 :(得分:0)

是的,第二个项目可以使用定义文件.d.ts

// ---------- projectA.d.ts ----------
declare module "projectA" {
    export class A {
        // ...
    }
}

// ---------- ClassB.ts ----------
import projectA = require("projectA"); // Use the definition in projectA.d.ts
var a = new projectA.A();

请参阅“环境外部模块”部分in the Handbook

您可以使用dts-generator从projectA自动生成单个定义文件包。

答案 1 :(得分:0)

根据我的评论,当我执行var a = new projectA.A()时,projectA未定义,我发现其原因在于构建了R.js优化文件(projectA.js)的方式 - 它需要将insertRequire添加到R.js构建中。这导致在加载projectA并正确实例化projectA时调用require [" projectA"]。

这里有很多活动部件。遗憾的是打字稿外部模块和内部模块的工作方式不同。取决于语法声明模块" SomeModuleName"和声明模块SomeModuleName通过使用外部和内部模块之间的引号来区分是令人困惑的。

如果语法相同并且编译器-m标志处理所有底层细节,那将是很好的。