3

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

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

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

以下不公开Client该类:

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

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

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

所以我希望得到类似的东西:

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

export分配模块的名称在哪里。

4

1 回答 1

1

/// <reference ... /当您在文件级别导出某些内容时不起作用(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

于 2013-09-01T11:04:24.083 回答