5

我剛剛將我的代碼升級到Typescript 0.9,更新了Jquery,JqueryUI,Knockout,Knockout.Mapping和Knockout.Validation的DefinitelyTyped定義。Typescript 0.9 + Knockout:奇怪的編譯器錯誤

該代碼似乎編譯,我看到正確的輸出js文件。

然而VS強調和KnockoutObservableArray<T>上的obs(value: T) setter的每一個使用,說我提供了無效類型。

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,它都是bool。它是VS,編譯器還是WebEssentials錯誤?我如何使〜100錯誤消失?

EDIT(視覺證據): enter image description here lot.TimeOnServerKnockoutObservable<number>data.TimeOnServernumber

是的,我已經重新啓動vs +窗口。錯誤持續存在。

+0

你可以發佈這些線路VS拋出一個不穩定超過一個? – thomaux

+1

@Anzeo:添加了示例屏幕截圖 – TDaver

+0

@kingdango:你是什麼意思'不喜歡裸體lambda'?此代碼編譯並正確運行。 – TDaver

回答

2

我有這個問題。我沒有調查爲什麼這種情況正在發生,但在我的項目中敲出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>; 
} 
+0

奇怪的是它的工作! – TDaver