2017-06-15 162 views
1

我想使用Typescript爲Knockout-Validation庫(https://github.com/Knockout-Contrib/Knockout-Validation)編寫自定義規則。我有一個的.ts文件,我想了這個代碼:Typescript敲除驗證自定義規則

export function enableCustomValidators() { 
    ko.validation.rules["myRule"] = { 
     validator: function (val: string, otherVal: string) { 
      return val === otherVal; 
    }, 
    message: 'The field must equal {0}', 
} 

    ko.validation.registerExtenders(); 
} 

在構建時,我收到此錯誤:錯誤TS7017元素隱含有一個「任意」類型,因爲類型「KnockoutValidationRuleDefinitions」沒有索引簽名。

使用Typescript添加新的自定義驗證程序的正確方法是什麼?

感謝

回答

2

最有可能與type definitions的問題,它沒有一個索引添加自定義的驗證。你可以在你的代碼臨時增加的KnockoutValidationRuleDefinitions接口:

declare global { 
    interface KnockoutValidationRuleDefinitions { 
     [customValidationRuleName: string]: KnockoutValidationRuleDefinition 
    } 
} 

或明確投ko.validation.rulesany沉默編譯:

(ko.validation.rules as any)["myRule"] = { 
    validator: function (val: string, otherVal: string) { 
     return val === otherVal; 
    }, 
    message: 'The field must equal {0}', 
} 

如果你想要這個固定的類型定義本身就可以提高一PR反對DefinitelyTyped reporitory,並將索引器添加到KnockoutValidationRuleDefinitions接口。