1

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

interface IPerson {
    FirstName: String;
}

class Person implements IPerson {
    FirstName: String;
}

class KOPerson implements IPerson {
    FirstName:  KnockoutObservableString;
}

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

4

1 回答 1

2

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

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

于 2013-03-11T08:52:02.423 回答