/** * 若干定义的阐释: * @def 弹性课组 - 指的是没有“应修门数”要求的课组 * @todo 优化这里的接口设计,现在暂且是十分不优美的,不过考虑到该功能暂且不上,先搁置 */ export declare enum CourseState { COMPLETED = 0, ELECTED = 1, NOT_COMPLETED = 2 } export interface CourseItemBase { id: string; name: string; credit: number; } export interface CourseItemCompletion extends CourseItemBase { point?: number; grade?: string; state: CourseState; } export interface CourseItemFull extends CourseItemBase { dumb?: undefined; } export interface CourseItemUncompletion extends CourseItemBase { state: CourseState; } export declare enum CourseType { COMPULSORY = 0, RESTRICTED = 1, ELECTIVE = 2, EXCLUDED = 3 } export interface CourseSetBase { setName: string; type: CourseType; } export interface CourseSetCompletion extends CourseSetBase { course: CourseItemCompletion[]; requiredCredit?: number; completedCredit?: number; requiredCourseNum?: number; completedCourseNum?: number; fullCompleted: boolean; } export interface CourseSetFull extends CourseSetBase { course: CourseItemFull[]; } export interface CourseSetUncompletion extends CourseSetBase { course: CourseItemUncompletion[]; uncompletedCredit?: number; } export interface ProgramCompletion { courseSet: CourseSetCompletion[]; completedCredit: number; compulsoryCredit: number; restrictedCredit: number; electiveCredit: number; duplicatedCourse: string[]; } export interface ProgramFull { courseSet: CourseSetFull[]; } export interface ProgramUncompletion { courseSet: CourseSetUncompletion[]; } export type Program = ProgramCompletion | ProgramFull | ProgramUncompletion;