【问题标题】:how to get Knockout validation compiling under typescript with Knockout 3.5.0?如何使用 Knockout 3.5.0 在 typescript 下编译 Knockout 验证?
【发布时间】:2020-01-28 03:43:13
【问题描述】:

现在 Knockout 3.5.0 已经发布,我在使用 Knockout 3.5.0 提供的新类型定义结构进行编译时遇到问题。

通过执行以下操作,我能够让 Knockout 验证正确地与 3.5.0 中的新类型定义文件集成:

首先:在淘汰赛验证 index.d.ts 文件的顶部添加了一个导入:

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

第二个:将 KnockoutObservable、KnockoutComputed 和 KnockoutObservableArray 引用更改为 Observable、Computed 和 ObservableArray

第三:将 Knockout 接口的扩展包装在声明模块“knockout”语句中: 导出接口 KnockoutValidationRuleDefinitions 扩展 ObservableExtenderOptions { }

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 调用上都遇到了编译错误,这些调用用要求标记了 observables。例如:

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

给出一个错误: 没有重载匹配此调用。

TS2769 TypeScript (TS) 没有重载匹配此调用。重载 1 个 2、,报如下错误。类型参数不可分配给 类型参数。对象字面量只能指定已知 属性,并且在类型中不存在。重载 2 of 2, 给出了 以下错误。类型的参数不能分配给参数 类型。对象字面量只能指定已知属性,并且确实 类型中不存在。

关于如何修改敲除验证 index.d.ts 文件以正确扩展 Knockout 的扩展方法的任何建议?

作为参考,用于敲除验证的 index.d.ts 文件是 here。

【问题讨论】:

    标签: typescript knockout.js knockout-validation


    【解决方案1】:

    Github 上的一个善良的鞋底在 Knockout.validation 上发布了一个 PR,其中包括一个新的 knockout.validation.d.ts 文件,该文件使用新的 3.5.0 样式类型。

    他的PR还没有被接受,但是你可以找到file here

    希望它将被拉入淘汰赛验证并创建一个新的 npm 包。目前,如果您遇到此问题,您可以获取该类型文件并直接使用它。这就是我计划在我的 Windows 构建机器恢复并运行后立即做的事情。该死的窗户!

    【讨论】:

      猜你喜欢
      • 2013-06-20
      • 2013-05-24
      • 2017-02-04
      • 2018-02-01
      • 2020-07-21
      • 2015-11-23
      • 2015-11-23
      • 2015-09-08
      • 2012-11-16
      相关资源
      最近更新 更多