@yanshoof/types
v1.2.1
Published
Global, organization-scoped types
Downloads
4
Readme
@yanshoof/types
Global, organization-scoped types and type guards
Why this package
In order to reduce code splitting across our platforms, we created a package that can be used to declare types.
The Type Library
Date and Time
type DayOfWeek
: a number from 0 to 6 inclusivetype HourOfDay
: a timetable hour, ranging from 0 to 12 inclusiveconst DAYS_IN_WEEK
: 7const HOURS_OF_DAY
: 13
Classrooms
interface IClassLookup
represents a class lookup object
School Search
interface ISchoolLookupResult
respresents a school lookup result
Lessons and Changes
enum LessonModification
is a modification that can be done to a lesson: cancellation, change of teacher, change of classroom, etc.interface IModification
is a combination of an optional modification and optional datainterface IStudyGroup
is a combination of a teacher and a subjectfunction isStudyGroup
is a type guard for the study group interfaceinterface IStudyGroupWithModification extends IStudyGroup, IModification
represents a modification. Determines a study group and the exact modification to it.interface ILesson extends IStudyGroup
represents a changeable lesson and is the standard lesson type across all plafromstype LessonOrMultiple
represents multiple lessons taking place at the same timefunction isILessonObj
is a type guard for the ILesson interfacefunction isAnyLessonObj
is a less strict type guard for multiple types of lessonstype ITeacherLesson
is a lesson whose teacher is known in advanceinterface IChange extends IStudyGroupWithModification
is a change in the schedule, the standard across all platforms.
Timetables
interface ITimetable<TLesson, TSchedule>
represents a timetable that is built from a schedule of another type
Usage
If you only wish to use the types (and not the type guards),
npm i --save-dev @yanshoof/types
If you do wish to use the type guards
npm i @yanshoof/types