【问题标题】:Operator '==' cannot be applied to types knockoutObservable<string> and string运算符 '==' 不能应用于类型 knockoutObservable<string> 和 string
【发布时间】:2014-11-29 12:43:46
【问题描述】:

当我尝试在 typescript 中使用 if 内部条件时,我收到错误“运算符 '==' 不能应用于类型 knockoutObservable 和字符串”

if(me.Info().roomName == "-") {

}

我在 VS2013 中收到此语句的智能感知错误。请指教。

【问题讨论】:

  • 你对错误有什么不明白的地方?
  • 我是否需要将“-”转换为任何其他类型,例如 ko.observable("-")。我只需要检查可观察字符串是否为“-”。我尝试了不同的方法,但仍然显示错误。我尝试了 me.Info().roomName() 和其他选项。它告诉 roomName() 不是一个函数。 In this roomName is KnockoutObservable.
  • 我尝试将这两个值都转换为像这样的淘汰赛可观察字符串。 this.Info().roomName == ko.observable("-")。它仍然没有按预期工作。即使 roomName 是“-”,条件也会返回 false。
  • 两者都是不同类型的对象,这就是您收到错误的原因。 roomName 是字符串还是其他类型?当您将“-”转换为与 roomName 相同的类型时,错误是什么?请发布 RoomName 的代码
  • export class BInfo { roomName: KnockoutObservable;} 下面是在 ViewModel 中如何声明 Info observableCollection。信息:KnockoutObservable = ko.observable(null);

标签: knockout.js typescript


【解决方案1】:

你需要调用你的 observable 来获取它的值,以便你可以将它与一个字符串进行比较:

if(me.Info().roomName() == "-") {

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-28
    • 2019-02-05
    • 2013-10-12
    • 1970-01-01
    相关资源
    最近更新 更多