从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
是分配模块的名称。
答案 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