【发布时间】:2020-11-20 17:05:06
【问题描述】:
我有以下使用不可变的类型脚本。我希望使用不可变列表来处理学生并生成唯一的学生列表。我的初始列表可能有重复的学生对象,我可以通过 studentId 过滤掉它们。
我面临的问题是,在迭代列表时,我无法从 Student 对象访问 studentId 属性,因此无法访问 studentId。
if (d && !studentIdSeen.has(d!.studentId)
export interface StudentProperties {
studentId: number;
student: string;
region: string;
active: boolean;
}
export interface Student extends TypedRecord<Student>, StudentProperties { }
export const studentFactory = makeTypedFactory<StudentProperties, Student>({ studentId: -1, student: '', region: '', active: true });
REDUX CALL
case types.FETCH_STUDENT_DATA_SUCCESS: {
let fetchedStudents = List(action.data.map(item => studentFactory(item)));
console.log("Fetched student data ==> " + fetchedStudents);
let uniqueStudents: Student[] = [];
let studentIdSeen: Set<number>;
fetchedStudents.forEach(d => {
if (d && !studentIdSeen.has(d!.studentId) { //error here , not able to access studentId attribute
uniqueStudents.push(d);
studentIdSeen.add(d!.studentId);////error here , not able to access studentId attribute
}
});
console.log("List of unique students = " + uniqueStudents);
return state.set('students', List(uniqueStudents));
}
如果我在 state.set('students',fetchedStudents) 中返回 fetchedStudents,它可以正常工作,因此正在获取的数据没有问题。
【问题讨论】:
标签: javascript typescript react-redux