Angularjs json文件的严格数据类型

Angularjs json文件的严格数据类型,angularjs,json,typescript,Angularjs,Json,Typescript,我对angularjs是新手。当我从json中获取数据时,我首先创建一个类,并定义json中的所有变量,以获得严格的数据类型,就像我的json文件一样 {"fname":"Mark","lname":"jhony"} 所以在我的课堂上是这样的 export class user{ fname: string; lname : string; } 我不知道如何为下面的json数据创建类 {"fname":"Mark","lname":"jhony", "parcels":[ {

我对angularjs是新手。当我从json中获取数据时,我首先创建一个类,并定义json中的所有变量,以获得严格的数据类型,就像我的json文件一样

 {"fname":"Mark","lname":"jhony"}
所以在我的课堂上是这样的

export class user{

 fname: string;
 lname : string;
}
我不知道如何为下面的json数据创建类

{"fname":"Mark","lname":"jhony",
 "parcels":[
   {
    "parcelId":123,
    "parcelName :"asd",
    "parcelItems:[
       { 
        "itemId":2,
        "itemName":"perfume"
       },
       { 
         "itemId":4,
         "itemName":"soap"
       }
     ]
]}

我试图在类中添加数组,但没有得到在angularjs中处理它的最佳方法。

通常,您会使用接口来表示基本值的数据结构,例如:

interface ParcelItem {
  itemId: number;
  itemName: string;
}
interface Parcel {
  parcelId: number;
  parcelName: string;
  parcelItems: ParcelItem[];
}
interface User {
  fname: string;
  lname: string;
  Parcels: Parcel[];
}
根据获取和解析JSON的方式,可以指定要使用的接口。最简单的例子是:

const user = JSON.parse(userJson) as User;
如果您想使用一个类(可能用于关联的数据操作方法),则必须使用构造函数实例化该类。这可能看起来像:

const userValues = JSON.parse(userJson);
const user = new User(userValues);
这会奏效的

export interface ParcelItemType {    
    itemId: number;
    itemName: string;
}

export interface ParcelType {
    parcelId: number;
    parcelName: string;
    parcelItems: ParcelItemType[];
}

export interface YourType {
   fname: string;
   lname: string;
   parcels: ParcelType[];
}

需要注意的重要事项:这不会以任何方式验证JSON。这意味着稍后可能会出现运行时错误,例如,
lname
未定义。键入仅验证TypeScript代码在编译时是否与其自身一致。对运行时一无所知。作为一名TypeScript新手,我必须让一位同事向我解释这一点,直到我明白在这个模式中没有验证。他还提到,人们使用一些其他工具来指定JSON,然后生成TypeScript类型。下面是一个问题,其中有几个答案,说明如果还需要运行时验证,应该怎么做:还有一个问题: