В настоящее время я работаю над проектом, в котором использую библиотеку Q для промисов с TypeScript.
В новейшей версии Q есть метод Q.noConflict()
. Для ввода я использую файл .d.ts из Определенно типизированный репозиторий.
Набор текста не поддерживает Q.noConflict()
. Я пытался несколько часов переписать набор текста для поддержки этого метода, но безуспешно.
Я хотел бы использовать такой код:
var myQ = Q.noConflict();
Где myQ
относится к типу Q
. Но в .d.ts Q есть модуль, который имеет не только функции, но и интерфейсы. Это означает, что я не могу просто добавить что-то вроде этого noConflict(): Q
.
Вот схема из файла определения (не весь файл, а со всеми соответствующими частями):
объявить функцию Q(значение: T): Q.Promise;
declare module Q {
interface IPromise<T> {
then<U>(onFulfill?: (value: T) => U | IPromise<U>, onReject?: (error: any) => U | IPromise<U>): IPromise<U>;
}
interface Deferred<T> {
promise: Promise<T>;
}
interface Promise<T> {
get<U>(propertyName: String): Promise<U>;
}
export function when(): Promise<void>;
export function resolve<T>(object: T): Promise<T>;
}
declare module "q" {
export = Q;
}
Конечно, я не ожидаю получить весь код, но было бы здорово получить некоторые подсказки от людей, которые уже написали несколько файлов .d.ts.
export var q = Q.noConflict(); var promises = new Array<Q.IPromise<void>>(); promises.push(method1); promises.push(method2); return q.all(promises);
Поскольку компилятор TypeScript игнорирует объявления типов, использование Q.x для типов не является проблемой. 25.06.2015