как получить валидацию компиляции Knockout под машинопись с Knockout 3.5.0? - PullRequest
1 голос
/ 27 сентября 2019

Теперь, когда Knockout 3.5.0 был выпущен, у меня возникают проблемы при получении проверки Knockout для компиляции с новой структурой определения типа, которая поставляется с Knockout 3.5.0.

Мне удалось получить проверку Knockoutчтобы должным образом интегрировать его с новым файлом определения типа из 3.5.0, выполнив следующие действия:

first: добавлен импорт в начале файла knockout valiation index.d.ts:

import { Observable, ObservableArray, Computed, Static, SubscribableFunctions, ObservableExtenderOptions } from "knockout";

секунда: измененные ссылки KnockoutObservable, KnockoutComputed и KnockoutObservableArray на Observable, Computed и ObservableArray

треть: обернутые расширения интерфейсов Knockout в декларацию оператора «нокаут» модуля: интерфейс экспорта

declare module "knockout" {
    interface Static {
        validation: KnockoutValidationStatic;
        validatedObservable<T>(initialValue?: T): Observable<T>;
        applyBindingsWithValidation(viewModel: any, rootNode?: any, options?: KnockoutValidationConfiguration): void;
    }

    export interface SubscribableFunctions<T> {
        isValid: Computed<boolean>;
        isValidating: Observable<boolean>;
        rules: ObservableArray<KnockoutValidationRule>;
        isModified: Observable<boolean>;
        error: Computed<string>;
        setError(error: string): void;
        clearError(): void;
    }
}

Это прекрасно работает, но теперь я получаю ошибки компиляции на всех вызовах .extend, которые помечают наблюдаемые требованиями.Например:

this.settings.name.extend({ required: true });

выдает ошибку: Никакая перегрузка не соответствует этому вызову.

TS2769 TypeScript (TS) Никакая перегрузка не соответствует этому вызову.Перегрузка 1 из 2 ,, выдала следующую ошибку.Аргумент типа не может быть назначен параметру типа.Объектный литерал может указывать только известные свойства и не существует в типе.Перегрузка 2 из 2 ,, выдала следующую ошибку.Аргумент типа не может быть назначен параметру типа.Объектный литерал может указывать только известные свойства и не существует в типе.

Есть предложения о том, как переработать файл index.d.ts проверки правильности выбивки, чтобы должным образом расширить метод расширений Knockout?

Для справки файл index.d.ts для проверки выбивания: здесь .

1 Ответ

0 голосов
/ 29 сентября 2019

Добрый человек на Github опубликовал PR на Knockout.validation, который включает в себя новый файл knockout.validation.d.ts, в котором используются новые стили 3.5.0.

Его PR не был принятпока что, но вы можете найти файл здесь

Надеюсь, он будет втянут в knockout-validation и будет создан новый пакет npm.А пока, если вы столкнетесь с этой проблемой, вы можете получить этот файл наборов и использовать его напрямую.Это то, что я планирую сделать, как только я смогу снова запустить и запустить свою машину для сборки Windows.Чертовы окна!

...