2016-06-20 1 views
2

Я пытаюсь использовать функцию filterasync «s, что из дока для v1.5.2 (тот, который вы получите по умолчанию, если вы npm i async), принимаете одно значение (логического) для обратного вызова в итераторе:Что делать, если определения определенного типа используются для более новой версии, чем то, что я хочу?

Итератор (элемент, обратный вызов) - Тест на истинность, применяемый к каждому элементу в обр. Итератору передается обратный вызов (trueValue), который должен быть вызван с логическим аргументом после его завершения.

Я проверил the code, и это правда для этой версии.

Проблема заключается в том, что кандидат на выпуск, который обрабатывается для async v2, как представляется, изменяет это, чтобы принять обычный (ошибка, значение) обратный вызов. Последнее определение - это то, что используется определениями типа для async в DefinitelyTyped:

interface AsyncBooleanIterator<T> { (item: T, callback: (err: string, truthValue: boolean) => void): void; } 
// ... 
filter<T>(arr: T[], iterator: AsyncBooleanIterator<T>, callback?: AsyncResultArrayCallback<T>): any; 

Что происходит? Я не могу опубликовать PR, потому что текущие определения типов - это будущее async. Но я получаю сообщение об ошибке, используя async, как я полагаю, для v1.5.2. Существуют ли разные версии, к которым я могу получить доступ для определенных типов defs?

Я начинаю с машинописного текста и слышал о том, что называется слиянием. По-видимому, можно расширить определение AsyncBooleanIterator так, чтобы он мог принимать обратный вызов с одним логическим аргументом ... но я не уверен, как это сделать. Любая помощь будет оценена по достоинству.

ответ

1

Вы можете использовать одну из предыдущих версий - просмотреть историю и выбрать соответствующую фиксацию.
Если вы хотите вручную разрешить все подписи обратного вызова вы можете сделать что-то вроде этого:

interface AsyncBooleanIterator<T> { 
    (item: T, callback: ((truthValue: boolean) => void) | ((err:string,truthValue:boolean) => void)): void; 
} 
+0

Привет Алексей! Итак, вы говорите, чтобы выбрать фиксацию во всей истории DefinitelyTyped, когда async.d.ts имеет определение v1.5.2 для фильтра и загружает его вручную в моем проекте? Это то, как люди работают с DefinitelyTyped? (Я переключился на [email protected] - проще). Re AsyncBooleanIterator, я знаю, как этот тип можно определить для размещения старой версии. Но как я могу вступить в силу? Если я просто отброшу это в свой файл, это не сработает. Как я могу каким-то образом расширить/слить это определение типа, которое находится в typings/globals/async/index.d.ts из моих ts-файлов? – justin

+1

В 'typings.json' вы можете указать требуемый идентификатор фиксации. Например: «ng-file-upload»: «github: DefinitelyTyped/DefinitelyTyped/ng-file-upload/ng-file-upload.d.ts # 41f8573534b0fff88707d0a4cb870456b50cd43b» ' –

+0

Спасибо, я не знал этого :) У вас есть знаете, как AsyncBooleanIterator может быть расширен из-за границы файла DefinitelyTyped? (для будущего ref) – justin

Смежные вопросы