【问题标题】:TypeScript and Knockout View ModelsTypeScript 和 Knockout 视图模型
【发布时间】:2013-03-11 16:52:02
【问题描述】:

因此,借助 TypeScript 提供的出色类型安全功能,我遇到了一种新问题。假设我想传递强类型视图模型。使用原始属性或 KO 包装属性键入这些更好吗?有没有办法制作一个支持两者的标准接口?如

interface IPerson {
    FirstName: String;
}

class Person implements IPerson {
    FirstName: String;
}

class KOPerson implements IPerson {
    FirstName:  KnockoutObservableString;
}

显然,上面的代码不会编译。有什么方法可以实现某种多态性,其中未包装或 KO 包装的视图模型版本可以通过相同的共享接口传递?没有在任何地方恢复“任何”打字?我讨厌在我所有的视图模型类型中加入 Knockout-awareness。我希望这一系列问题是有道理的!

【问题讨论】:

    标签: knockout.js typescript


    【解决方案1】:

    我看不出您为什么不想将 KO 意识融入您的视图模型中?如果您决定从 Knockout 切换到另一个 MVX 框架,您可能需要重新考虑您的视图模型。

    我要做的是为您将从后端返回的参数编写 TypeScript 接口。这样,您与后端的接口就被清晰地键入和定义了。如果你想切换到另一个框架,你可以重用这个类型。

    【讨论】:

    • 好主意。是的,我想我想让视图模型与使用它们的任何框架无关(原始 Javascript 中存在的优势)。我认为如果我已经将视图键入 KO(通过绑定),最好不要将视图模型也绑定到它。但是,也许没有很好的方法来做到这一点!我现在会咬紧牙关,让他们知道 KO。谢谢!
    • 如果您使用原始类型键入视图模型,您也将失去 Knockout 类型为您提供的好处。
    猜你喜欢
    • 2014-03-06
    • 1970-01-01
    • 2013-01-03
    • 1970-01-01
    • 2012-08-04
    • 2012-05-24
    • 1970-01-01
    • 2015-11-19
    • 2014-09-14
    相关资源
    最近更新 更多