簡體   English   中英

Angular和TypeScript:從JSON對象實例化類的實例

[英]Angular and TypeScript: instantiating an instance of a class from a JSON object

我有一個接口來表示來自Web API的響應:

interface Person {
  dateofbirth: string;
  firstname: string;
  lastname: string;
}

但是我不想處理日期時間的字符串表示形式。 相反,我想處理一個MomentJS對象。 因此,我為具有MomentJS屬性的視圖模型創建了一個類。 構造它時,我將字符串轉換為MomentJS對象:

class PersonViewModel {
      dateofbirth: Moment.moment;
      firstname: string;
      lastname: string;

      constructor(dateofbirth: string, firstname: string, lastname: string) {
        this.dateofbirth = moment.utc(dateofbirth);
        this.firstname = firstname;
        this.lastname = lastname;
      }
}

但是,如果來自Web API的響應包含10個以上的字段(通常是這種情況),我發現自己要做很多手工工作。 我嘗試使用第三方工具來簡化給定JSON對象的對象的實例,但是我不想依賴第三方工具來實現應用程序的關鍵部分。

我的問題是-是否有任何本機TypeScript功能可以簡化此過程? 還是應該采用完全不同的方法?

如您所見,矩實例不僅由new Moment創建,而且還通過靜態矩函數創建。 其他類或對象可能會通過new SomeClass()實例化。 因此,解決該問題的通用方法基本上是不可能的。

這也意味着要區分基本體和類/對象。 但是在Typescript中,您也可以創建聯合類型,例如string | SomeClass string | SomeClass 在運行時,檢查給定每個參數的特定類型將需要進行大量工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM