2015-12-15 4 views
2

Мы выбрали, чтобы не допустить какой-либо неявное любые типы в нашем проекте, однако мы используем 3-й партии ko.validation libaryмашинопись - не позволяя неявное любые типы

мы получаем ошибку на следующей

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

Подпись индекса типа объекта неявно имеет тип «any».

Ошибка на ko.validation.rules [ «minArrayLength»]

Как мы не можем позволить любой, но по-прежнему использовать ko.validation.rules?

ответ

3

Добавьте его в KnockoutValidationRuleDefinitions интерфейс с помощью декларации сращивания:

interface KnockoutValidationRuleDefinitions { 
    minArrayLength: KnockoutValidationRuleDefinition; 
} 

Это будет определять правила на ko.validation.rules, устраняя тем самым неявным любая ошибка.

Если вы используете внешние модули, обязательно поместите этот интерфейс в свой собственный файл определения (.d.ts).

+0

, который выглядит правильно, если он еще не определен, но, похоже, это не объясняет ошибку, так как '['minArrayLength']' не ограничивается типом def. –

+0

@mk. сделав это, 'ko.validation.rules ['minArrayLength']' будет иметь тип 'KnockoutValidationRuleDefinitions' вместо' any', и он исправит ошибку. –

+0

'rules [" anything "]' [не набирается] (http://www.typescriptlang.org/Playground#src=var%20x%20%3D%20%7B%7D%3B%0D%0Ax. foo% 20% 3D% 201% 3B% 0D% 0Ax% 5B% 22foo% 22% 5D% 20% 3D% 201% 3B), за исключением ввода текста подписи индекса, такого как 'interface Rules {[key: string]: KValRuleDef ; } '. –

Смежные вопросы