用2+编写一个棱角的TypeScript应用程序。
我正在建模对象以保存在数据源中。有些对象中有助手方法。我救了他们没问题。样本原始类设计
export class Order {
readonly orderNumber: string;
amount: number;
shortCode: string;
readonly dateCreated: string;
constructor(){
this.orderNumber = cuid();
this.dateCreated = moment().format();
}
incrementAmount(): void {
this.amount += 1;
}退回的样品:
{ amount: 74.22,
dateCreated: '2017-04-03T21:23:49-04:00',
orderNumber: 'cj12v2rf50000zoguviraoik9',
shortCode: 'SJLLDE' }现在,当我检索它们时,它们并不是原始的对象形式。将对象逐个字段读取到原始对象类型似乎非常反JavaScript (TypeScript)。或者,通过处理一个已知的对象,我可以最大限度地利用我的类型并增加功能。
是否获取服务返回的数据并将其传输到原始对象,这是作为此生态系统中常见模式所做的事情吗?
如果是这样的话,是否有一些编写ups来解释这样做的常见方法?
发布于 2017-04-05 01:02:34
当从后端接收到对象时,应该将其从JSON对象转换为适当的模型对象。
我通常是这样做的:
let order: Order = new Order(orderJsonObject);要做到这一点,您需要像这样更新构造函数:
export class Order {
readonly orderNumber: string;
amount: number;
shortCode: string;
readonly dateCreated: string;
constructor(data){
if(data != null) {
this.orderNumber = data.orderNumber;
this.amount = data.amount;
this.shortCode = data.shortCode;
this.dateCreated = data.dateCreated;
} else {
this.orderNumber = cuid();
this.dateCreated = moment().format();
}
}
}这是我使用的模式,到目前为止,它为我们提供了很好的服务。
祝好运
发布于 2018-09-20 10:19:35
您还可以使用第三方库来解析json:https://www.npmjs.com/package/ta-json,这应该可以工作。
import { JSON, JsonObject, JsonProperty } from "ta-json";
@JsonObject()
export class Order {
@JsonProperty()
readonly orderNumber: string;
@JsonProperty()
amount: number;
@JsonProperty()
shortCode: string;
@JsonProperty()
readonly dateCreated: string;
constructor() {
this.orderNumber = cuid();
this.dateCreated = moment().format();
}
incrementAmount(): void {
this.amount += 1;
}
}
let order = new Order();
console.log(order.amount);
let toSave = JSON.stringify(order);
let fromJson = JSON.parse<Order>(toSave);
fromJson.incrementAmount();
console.log(fromJson.amount);https://stackoverflow.com/questions/43219996
复制相似问题