因此,由于TypeScript提供了令人敬畏的类型安全功能,我遇到了一种新的问题。假设我想传递强类型视图模型。用原始属性或KO包装属性键入这些更好吗?有没有办法制作一个支持两者的标准界面?如在
interface IPerson {
FirstName: String;
}
class Person implements IPerson {
FirstName: String;
}
class KOPerson implements IPerson {
FirstName: KnockoutObservableString;
}
显然,以上不会编译。有没有办法实现某种多态性,其中可以通过相同的共享接口传递未包装或KO包装的视图模型版本?没有回复到任何地方的“任何”打字?我讨厌将Knockout-awareness烘焙到我所有的视图模型类型中。我希望这一系列的提问有意义!
答案 0 :(得分:2)
我认为你没有理由不想将KO意识融入你的视图模型中?如果您决定从Knockout切换到另一个MVX框架,您可能需要重新考虑您的视图模型。
我要做的是为你将从后端返回的参数编写TypeScript接口。通过这种方式,您的后端界面显然是打字和定义的。如果您想切换到另一个框架,可以重复使用此类型。