在TypeScript中使用“export =”导出的参考模块

时间:2013-09-01 10:41:05

标签: typescript amd

从TypeScript 0.9开始,您可以使用export =直接设置模块的导出值:

// client.ts 
class Client { 
    constructor(public name: string, public description: string) { } 
} 
export = Client; 

有没有办法使用Client来引用/// <reference ... />

以下内容未公开Client类:

/// <reference path="./client.ts" />

class SomeClass {
    addClient(client: Client) { // Could not find symbol 'Client'
        ...
    }
}

我想这是预期的行为,因为我导出了对Client类的直接引用,所以该模块基本上是匿名的。但是在上面的类中我实际上并没有实例化一个新的Client,所以添加import Client = require('Client');会让AMD加载器加载client.js,即使addClient不需要它也是如此。永远不会被称为。

所以我希望有类似的东西:

/// <reference path="./client.ts" export="Client" />

其中export是分配模块的名称。

1 个答案:

答案 0 :(得分:1)

当您在文件级别导出某些内容时,

/// <reference ... /不起作用(在typescript文档中称为external modules

将您的代码修改为:

// client.ts 
class Client { 
    constructor(public name: string, public description: string) { } 
} 
// Remove this line export = Client; 

进一步说明:在文件根目录级别导出任何内容后,访问文件中项目的唯一方法是import / require组合。

PS:我制作了一个关于内部/外部打字稿模块的视频:http://www.youtube.com/watch?v=KDrWLMUY0R0&hd=1