假设我有以下接口:



export interface MyObject {
  id: string;
  createdAt: Date;
  updatedAt: Date;
}

export interface MyFile extends MyObject {
  data: any;
  name: string;
}

export interface MyUser extends MyObject {
  name: string;
  photos: Array < MyFile > ;
}





我该如何在Angular应用程序中初始化MyUser实例?我遇到的问题是我的对象实际上很大,而且我认为将有一种不必为每个属性声明默认值的方法,尤其是在模型中确实有数组的数组!

最佳答案

符合接口的任何东西都可以通过定义来实现。这是因为TypeScript具有结构类型系统。

以下是一些初始化接口实现的示例。

const user = {
  id: "1",
  createdAt: new Date(),
  updatedAt: new Date(),
  name: "Kurt",
  photos: [{
    id: "1",
    name: "avatar.png",
    createdAt: new Date(),
    updatedAt: new Date(),
    data: "TWFuIGlzIGRpc3Rpbmd1aXNoZWQsIG5vdCBvbmx5IGJ5IGhpcyByZWFzb24sIGJ1dCBieSB0aGlzIHNpbmd1bGFyIHBhc3Npb24gZnJvbSBvdGhlciBhbmltYWxzLCB3aGljaCBpcyBhIGx1c3Qgb2YgdGhlIG1pbmQsIHRoYXQgYnkgYSBwZXJzZXZlcmFuY2Ugb2YgZGVsaWdodCBpbiB0aGUgY29udGludWVkIGFuZCBpbmRlZmF0aWdhYmxlIGdlbmVyYXRpb24gb2Yga25vd2xlZGdlLCBleGNlZWRzIHRoZSBzaG9ydCB2ZWhlbWVuY2Ugb2YgYW55IGNhcm5hbCBwbGVhc3VyZS4="
  }]
};


上面的对象文字实现MyUser接口。

您还可以在变量声明中指定接口类型,这在这种情况下很有用,因为它在我们编写对象文字时为接口成员提供了智能感知。

const user: MyUser = {
  id: "1",
  createdAt: new Date(),
  updatedAt: new Date(),
  name: "Kurt",
  photos: [{
    id: "1",
    name: "avatar.png",
    createdAt: new Date(),
    updatedAt: new Date(),
    data: "TWFuIGlzIGRpc3Rpbmd1aXNoZWQsIG5vdCBvbmx5IGJ5IGhpcyByZWFzb24sIGJ1dCBieSB0aGlzIHNpbmd1bGFyIHBhc3Npb24gZnJvbSBvdGhlciBhbmltYWxzLCB3aGljaCBpcyBhIGx1c3Qgb2YgdGhlIG1pbmQsIHRoYXQgYnkgYSBwZXJzZXZlcmFuY2Ugb2YgZGVsaWdodCBpbiB0aGUgY29udGludWVkIGFuZCBpbmRlZmF0aWdhYmxlIGdlbmVyYXRpb24gb2Yga25vd2xlZGdlLCBleGNlZWRzIHRoZSBzaG9ydCB2ZWhlbWVuY2Ugb2YgYW55IGNhcm5hbCBwbGVhc3VyZS4="
  }]
};

09-30 16:09
查看更多