因此,借助 TypeScript 提供的出色类型安全功能,我遇到了一种新问题。假设我想传递强类型视图模型。使用原始属性或 KO 包装属性键入这些更好吗?有没有办法制作一个支持两者的标准接口?如在
interface IPerson {
FirstName: String;
}
class Person implements IPerson {
FirstName: String;
}
class KOPerson implements IPerson {
FirstName: KnockoutObservableString;
}
显然,上面不会编译。有什么方法可以实现某种多态性,其中未包装或 KO 包装的视图模型版本可以通过相同的共享接口传递?没有在任何地方恢复“任何”打字?我讨厌在我所有的视图模型类型中加入 Knockout-awareness。我希望这个问题是有道理的!