【问题标题】:Typescript 0.9 + Knockout: strange compiler errorsTypescript 0.9 + Knockout:奇怪的编译器错误
【发布时间】:2013-06-20 19:49:29
【问题描述】:

我刚刚将我的代码升级到 Typescript 0.9,更新了 Jquery、JqueryUI、Knockout、Knockout.Mapping 和 Knockout.Validation 的 DefinitiveTyped 定义。

代码看似编译,我看到正确的输出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 个错误消失?

编辑(视觉证据): lot.TimeOnServerKnockoutObservable<number>data.TimeOnServernumber

是的,我已经重启了 vs+windows。错误仍然存​​在。

【问题讨论】:

  • 你能发布其中的一条吗?
  • @Anzeo:添加示例截图
  • @kingdango:“不喜欢裸 lambdas”是什么意思?此代码编译并正确运行。
  • @kingdango:不,data.TimeOnServer 是number,正如我在帖子中提到的那样。它是从 WebAPI 后端返回的 json 接口。

标签: visual-studio-2012 knockout.js typescript web-essentials


【解决方案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>;
}

【讨论】:

    猜你喜欢
    • 2016-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-19
    相关资源
    最近更新 更多