Typescript 检索可观察对象的当前值
如果我想得到一个可观测值,我通常把它作为一个函数来调用 比如说,我有一个模型,其可观测值如下Typescript 检索可观察对象的当前值,typescript,knockout.js,Typescript,Knockout.js,如果我想得到一个可观测值,我通常把它作为一个函数来调用 比如说,我有一个模型,其可观测值如下 export interface ClientModel { name: KnockoutObservable<string>; age: KnockoutObservable<number>; } 下面是从一个模型转换到另一个模型的两个实现 A export function getServerModelJson(person: ClientModel) :
export interface ClientModel {
name: KnockoutObservable<string>;
age: KnockoutObservable<number>;
}
下面是从一个模型转换到另一个模型的两个实现
A
export function getServerModelJson(person: ClientModel) : ServerModel {
const personJson: ServerModel = {
name: ko.unwrap(person.name),
age: ko.unwrap(person.age)
}
return personJson;
}
B
export function getServerModelJson(person: ClientModel) : ServerModel {
const personJson: ServerModel = {
name: person.name(),
age: perosn.age()
}
return personJson;
}
这两者之间是否有区别(将可观察对象称为函数与使用ko.unwrap)。推荐的方法是什么?如果字段是复杂类型,会发生什么变化。在这些情况下,如何进行转换
这两者之间是否存在差异(将可观察对象称为函数与使用ko.unwrap
)
二:
ko.unwrap
,它将在这种情况下为您提供简单的非函数数据属性的值(当然,也可以是可观察的值)ko.unwrap
添加一个函数调用和两个检查(对ko.unwrap
的调用以及它所做的工作,以确定您传递的内容是否是可观察的)ko.unwap
。(如果你知道它是不可见的,同样没有真正的理由使用ko.unwrap
)
推荐的方法是什么
这取决于你,基于你的属性是什么,以及你是否知道它们是可观察的
如果字段是复杂类型,会发生什么变化。在这些情况下,如何进行转换
什么都不做,只是用同样的方法来做。请注意,如果复杂类型的属性也是可观察的,则必须单独处理它们(ko.unwrap
不深入)
export function getServerModelJson(person: ClientModel) : ServerModel {
const personJson: ServerModel = {
name: person.name(),
age: perosn.age()
}
return personJson;
}