首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TypeScript /Range2,常见的数据转换模式是什么?

TypeScript /Range2,常见的数据转换模式是什么?
EN

Stack Overflow用户
提问于 2017-04-05 00:41:22
回答 2查看 170关注 0票数 0

用2+编写一个棱角的TypeScript应用程序。

我正在建模对象以保存在数据源中。有些对象中有助手方法。我救了他们没问题。样本原始类设计

代码语言:javascript
复制
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;
    }

退回的样品:

代码语言:javascript
复制
{ amount: 74.22,
  dateCreated: '2017-04-03T21:23:49-04:00',
  orderNumber: 'cj12v2rf50000zoguviraoik9',
  shortCode: 'SJLLDE' }

现在,当我检索它们时,它们并不是原始的对象形式。将对象逐个字段读取到原始对象类型似乎非常反JavaScript (TypeScript)。或者,通过处理一个已知的对象,我可以最大限度地利用我的类型并增加功能。

是否获取服务返回的数据并将其传输到原始对象,这是作为此生态系统中常见模式所做的事情吗?

如果是这样的话,是否有一些编写ups来解释这样做的常见方法?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-04-05 01:02:34

当从后端接收到对象时,应该将其从JSON对象转换为适当的模型对象。

我通常是这样做的:

代码语言:javascript
复制
let order: Order = new Order(orderJsonObject);

要做到这一点,您需要像这样更新构造函数:

代码语言:javascript
复制
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();
        }
    }
}

这是我使用的模式,到目前为止,它为我们提供了很好的服务。

祝好运

票数 2
EN

Stack Overflow用户

发布于 2018-09-20 10:19:35

您还可以使用第三方库来解析json:https://www.npmjs.com/package/ta-json,这应该可以工作。

代码语言:javascript
复制
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);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43219996

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档