Typescript 0.9 + Knockout: странные ошибки компилятора

Я только что обновил свой код до Typescript 0.9, обновил определения DefinitelyTyped для Jquery, JqueryUI, Knockout, Knockout.Mapping и Knockout.Validation.

Код вроде бы компилируется, вижу правильные выходные js файлы.

Тем не менее, VS подчеркивает КАЖДОЕ использование установщика obs(value: T) для KnockoutObservable<T> и KnockoutObservableArray<T>, говоря, что я предоставил неверный тип.

Error   27  Supplied parameters do not match any signature of call target.  
Error   28  Could not select overload for 'call' expression.

У меня около 100 таких ошибок. Когда я пытаюсь ввести один, intellisense предлагает (): T и (value: bool):void для каждого типа - да, это логическое значение, независимо от указанного мной T. Это ошибка VS, компилятора или WebEssentials? Как сделать так, чтобы ~100 ошибок исчезли?

EDIT (визуальные доказательства): введите здесь описание изображенияlot.TimeOnServer – это KnockoutObservable<number>, data.TimeOnServer – number.

Да, я перезапустил vs+windows. Ошибка осталась.


person TDaver    schedule 24.06.2013    source источник
comment
Не могли бы вы опубликовать одну из тех строк, которые VS бросает шатко?   -  person thomaux    schedule 25.06.2013
comment
@Anzeo: добавлен пример скриншота   -  person TDaver    schedule 25.06.2013
comment
@kingdango: что значит «не любит голых лямбд»? Этот код компилируется и работает правильно.   -  person TDaver    schedule 26.06.2013
comment
@kingdango: нет, data.TimeOnServer — это number, как я упоминал в посте. Это интерфейс через json, возвращаемый серверной частью WebAPI.   -  person TDaver    schedule 26.06.2013


Ответы (1)


У меня была такая же проблема. Я не исследовал, почему это происходит, но в моем проекте после комментирования последнего интерфейса в Knockout.validation.d.ts ошибки исчезают. Однако это нарушит ваш вызов isValid для проверки.

interface KnockoutSubscribableFunctions {
  isValid: KnockoutComputed<boolean>;
  isValidating: KnockoutObservable<boolean>;
  rules: KnockoutObservableArray<KnockoutValidationRule>;
}

Я добавил следующее, чтобы вернуть функцию isValid

interface KnockoutObservableBase {
    isValid: KnockoutComputed<boolean>;
    isValidating: KnockoutObservable<boolean>;
    rules: KnockoutObservableArray<KnockoutValidationRule>;
}
person Andy May    schedule 02.07.2013