knockout.js 如何使用Knockout 3.5.0在打字脚本下编译Knockout验证?

bsxbgnwa  于 2022-11-10  发布在  其他
关注(0)|答案(1)|浏览(219)

现在Knockout 3.5.0已经发布,我在使用Knockout 3.5.0提供的新类型定义结构编译Knockout验证时遇到了问题。
我能够通过执行以下操作使Knockout验证与Python 3.5.0中的新类型定义文件适当地集成:
首先:在淘汰验证索引.d.ts文件的顶部添加了一个导入:

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

第二个:将KnockoutObservable、KnockoutComputed和KnockoutObservableArray引用更改为Observable、Computed和ObservableArray
第三:在声明模块“knockout”语句中 Package Knockout接口的扩展:导出接口KnockoutValidationRuleDefinitions扩展可观察扩展器选项{ }

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 });

给出一个错误:没有与此调用匹配的重载。
TS 2769类型脚本(TS)没有与此调用匹配的重载。重载1(共2个)出现以下错误。类型的参数无法分配给类型的参数。对象文本只能指定已知属性,并且在类型中不存在。重载2(共2个)出现以下错误。类型的参数无法分配给类型的参数。对象文本只能指定已知属性,并且不存在于类型中。
关于如何重新修改knockout验证index.d.ts文件以正确扩展Knockout的extend方法,有什么建议吗?
作为参考,敲除确认的索引.d.ts文件为here

vpfxa7rd

vpfxa7rd1#

Github上的一个善良的sole发布了一个关于Knockout.validation的PR,其中包括一个新的knockout.validation.d.ts文件,该文件使用了新的3.5.0风格的打字。
他的公关还没有被接受,但你可以找到file here
希望它将被拉入敲除验证,并将创建一个新的npm包。现在,如果你遇到这个问题,你可以抓住打字文件,并直接使用它。这就是我计划做的,只要我可以得到我的windows构建机器备份和运行。该死的windows!

相关问题