DEV Community

Discussion on: TypeScript Exercises Bonus🦠 - Answers Part 2

Collapse
 
drazbest profile image
dr-azbest • Edited

4:

type GetPatientsGroup<Patients extends Patient[], Group> = UnionToTuple<{[P in keyof Patients] : Patients[P] extends Group ? Patients[P] : never}[number]>
type SeparateByArray<Group extends any[]> = {[Key in keyof Group]: [Group[Key]]};

type Segragate<Patients extends Patient[]> = {
  sick: GetPatientsGroup<Patients, Sick>,
  quarantine: SeparateByArray<GetPatientsGroup<Patients, Quarantine>>,
  healty: GetPatientsGroup<Patients, Healthy>,
}
Enter fullscreen mode Exit fullscreen mode

Playground Link