我已经定义了一个界面:
export interface Student {
name : String;
section:String;
phoneNumber:String;
}
我想创建一个以studentId
为键的Student类型的Object对象。即
studentDetails[studentId]
应为Student;
studentDetails[studentId] : Student = [];
我如何使用inteface实现这个?
提前致谢
答案 0 :(得分:10)
您可以为此StudentDetails
定义另一个界面:
export interface Student {
name: string;
section: string;
phoneNumber: string;
}
export interface StudentDetails {
[key: number]: Student; //Or string instead of number
}
并像这样使用它:
//Valid
let studentDetails: StudentDetails = {
1: {
name: 'Test Person1',
section: 'Section 1',
phoneNumber: '12345678'
}
};
//Valid
studentDetails[2] = {
name: 'Test Person 2',
section: 'Section 2',
phoneNumber: '87654321'
};
//Invalid (properties in UpperCase)
studentDetails[3] = {
Name: 'Test Person 3',
Section: 'Section 3',
PhoneNumber: '52376724'
};
//Valid
let student: Student = studentDetails[2];
<强>更新强>
从你的评论到我的回答,我认为你想要这样的东西:
export interface Student {
id: number; // Added
name: string;
section: string;
phoneNumber: string;
}
export interface StudentMap {
[key: number]: Student;
}
let studentMap: StudentMap = {};
let studentDetails: Student[] = [
{
id: 56,
name: 'Test Person1',
section: 'Section 1',
phoneNumber: '12345678'
},
{
id: 175,
name: 'Test Person3',
section: 'Section 3',
phoneNumber: '521398763'
}
];
studentDetails.forEach((s: Student) => {
studentMap[s.id] = s;
});
for (let i = 0; i < studentDetails.length; i++) {
console.log(studentMap[studentDetails[i].id].name); // Test Person1, Test Person 3
}
答案 1 :(得分:1)
在评论中,OP已要求将studentID作为关键字,并将StudentDetails作为值。
以下代码可以帮助您,但由于问题本身不明确,请不要在冲动中投票。
首先将studetId添加到界面:
export interface Student {
name : String;
section:String;
phoneNumber:String;
studentID : number;
}
然后使用学生详细信息创建studentId地图
students : Student[];
student1 : Student;
var studentMap = new Map();
this.students = [
{name : "abc", section :'A', phoneNumber : '123',studentID : 101 },
{name : "xyz", section :'B', phoneNumber : '456',studentID : 102 },
{name : "mno", section :'C', phoneNumber : '789',studentID : 103 },
];
for (var item of this.students){
studentMap.set (item.studentID ,item);
}
this.student1 = studentMap.get(101);
请看这个(Plunkr I have created )