【问题标题】:typescript - while not allowing implicit any types打字稿 - 虽然不允许隐式任何类型
【发布时间】:2016-03-21 10:52:10
【问题描述】:

我们选择在我们的项目中不允许任何隐含的任何类型,但是我们使用的是 3rd 方 ko.validation 库

我们收到以下错误

ko.validation.rules['minArrayLength'] = {
    validator: function (obj: any, params: any) {
        return obj.length >= params.minLength;
    },
    message: "Array does not meet minimum length requirements"
};

对象类型的索引签名隐式具有“任意”类型。

错误在于 ko.validation.rules['minArrayLength']

我们怎么能不允许任何但仍然使用 ko.validation.rules?

【问题讨论】:

    标签: knockout.js typescript knockout-validation


    【解决方案1】:

    通过声明合并将其添加到KnockoutValidationRuleDefinitions接口:

    interface KnockoutValidationRuleDefinitions {
        minArrayLength: KnockoutValidationRuleDefinition;
    }
    

    这将在ko.validation.rules 上定义规则,从而消除隐含的任何错误。

    如果您使用外部模块,请确保将此接口放入您自己的定义文件(.d.ts)中。

    【讨论】:

    • 如果尚未定义,这看起来是正确的做法,但它似乎无法解释错误,因为 ['minArrayLength'] 不受类型 def 的限制。
    • @mk。通过这样做,ko.validation.rules['minArrayLength'] 的类型将是 KnockoutValidationRuleDefinitions 而不是 any,它将修复错误。
    • rules["anything"] isn't typed,除非通过索引签名键入,例如interface Rules { [key: string]: KValRuleDef; }
    • @mk。该示例没有正确演示它。见here。对于noImplicitAnymyNonExistantProperty 行将是一个错误。
    • @mk。没问题。我认为这是在过去最近的一个版本中,他们改变了它以便能够做到这一点。我不记得什么时候了。很高兴能提供帮助:)
    猜你喜欢
    • 2020-04-04
    • 2021-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-29
    • 2017-08-21
    • 2018-11-30
    • 2019-11-11
    相关资源
    最近更新 更多