假设我有以下接口:
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="
}]
};