Knockout.js 类型脚本和淘汰视图模型

Knockout.js 类型脚本和淘汰视图模型,knockout.js,typescript,Knockout.js,Typescript,因此,由于TypeScript提供了令人敬畏的类型安全特性,我遇到了一种新的问题。假设我想传递强类型视图模型。使用基元属性或KO包装属性键入这些属性更好吗?有没有办法制作一个既支持这两种功能的标准接口?如 interface IPerson { FirstName: String; } class Person implements IPerson { FirstName: String; } class KOPerson implements IPerson { F

因此,由于TypeScript提供了令人敬畏的类型安全特性,我遇到了一种新的问题。假设我想传递强类型视图模型。使用基元属性或KO包装属性键入这些属性更好吗?有没有办法制作一个既支持这两种功能的标准接口?如

interface IPerson {
    FirstName: String;
}

class Person implements IPerson {
    FirstName: String;
}

class KOPerson implements IPerson {
    FirstName:  KnockoutObservableString;
}

显然,上述内容无法编译。有没有办法实现某种多态性,在这种多态性中,视图模型的未包装版本或KO包装版本可以通过相同的共享接口传递?不必到处重复“任何”键入?我讨厌在所有视图模型类型中加入淘汰意识。我希望这一系列的提问有意义

我看不出有什么理由不想将KO感知烘焙到视图模型中?如果您决定从Knockout切换到另一个MVX框架,您可能需要重新考虑视图模型


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

好主意。是的,我想我想让视图模型与使用它们的任何框架无关(这是普通Javascript的一个优势)。我认为,如果我已经将视图输入到KO(通过绑定),最好不要将视图模型也绑定到它。但是,也许没有什么好办法!我现在就咬紧牙关,让他们知道。谢谢如果使用原始类型键入viewModels,也将失去淘汰类型所带来的好处。