Начиная с 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
будет именем для назначения модуля.
export =
, он компилируется в модуль AMD. Тогда это внешний модуль, который вы должны использовать синтаксисimport foo = require("bar");
для его импорта. JavaScript (и, следовательно, TypeScript) не может определить, действительно ли используетсяClient
, поэтому вызовrequire
будет на уровне файла. Если вы хотите иметь такую гибкость, объявитеClient
интерфейс в файле определения типа.d.ts
, а затем<reference>
его. - person Stephen Chung   schedule 03.09.2013Client
) это единственный вариант, спасибо. - person sroes   schedule 03.09.2013