【发布时间】:2013-09-01 21:20:29
【问题描述】:
从 TypeScript 0.9 开始,您可以直接使用 export = 设置模块的导出值:
// client.ts
class Client {
constructor(public name: string, public description: string) { }
}
export = Client;
有没有办法使用/// <reference ... /> 引用Client?
以下不公开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 是分配模块的名称。
【问题讨论】:
-
当你使用
export =时,它被编译成一个AMD模块。然后它是一个“外部”模块,您必须使用import foo = require("bar");语法来导入它。 JavaScript(以及 TypeScript)无法检测是否实际使用了Client,因此require调用将是文件级的。如果你想拥有这样的灵活性,在.d.ts类型定义文件中声明一个Client接口,然后<reference>它。 -
是的,我想(除了导入
Client)这是唯一的选择,谢谢。
标签: typescript amd