From 835bc9e19410ab7d1c3c2f20310c3ef172a611a5 Mon Sep 17 00:00:00 2001 From: Matt Pocock Date: Wed, 23 Aug 2023 10:57:12 +0100 Subject: [PATCH] 2023-08-23T09:57:12.654Z --- .../094-understand-classes.problem.ts} | 0 .../094-understand-classes.solution.ts} | 0 ...-public-and-private-properties.problem.ts} | 0 ...public-and-private-properties.solution.ts} | 0 .../096-hash-in-javascript.problem.ts} | 0 .../096-hash-in-javascript.solution.ts} | 0 .../097-optional-class-properties.problem.ts} | 0 ...097-optional-class-properties.solution.ts} | 0 .../098-readonly-class-properties.problem.ts} | 0 ...098-readonly-class-properties.solution.ts} | 0 .../099-auto-assignation.problem.ts} | 0 .../099-auto-assignation.solution.ts} | 0 .../100-class-methods.problem.ts} | 0 .../100-class-methods.solution.ts} | 0 .../101-decorators.problem.ts} | 0 .../101-decorators.solution.ts} | 0 .../102-implementing-interfaces.problem.ts} | 0 .../102-implementing-interfaces.solution.ts} | 0 src/030-classes/plan.md | 19 +++++++++++++++++++ ...unctions.problem.ts => 103-any.problem.ts} | 0 ...ctions.solution.ts => 103-any.solution.ts} | 0 .../104-global-typings-use-any.problem.ts} | 0 .../104-global-typings-use-any.solution.ts} | 0 .../105-as-and-as-any.problem.ts} | 0 .../105-as-and-as-any.solution.ts} | 0 .../106-limits-of-as.problem.ts} | 0 .../106-limits-of-as.solution.ts} | 0 .../107-satisfies.problem.ts} | 0 .../107-satisfies.solution.ts} | 0 ...ating-errors-a-function-throws.problem.ts} | 0 ...ting-errors-a-function-throws.solution.ts} | 0 ...109-excess-properties-warnings.problem.ts} | 0 ...09-excess-properties-warnings.solution.ts} | 0 ...object-keys-and-object-entries.problem.ts} | 0 ...bject-keys-and-object-entries.solution.ts} | 0 ...1-structural-vs-nominal-typing.problem.ts} | 0 ...-structural-vs-nominal-typing.solution.ts} | 0 .../112-unions-of-functions.problem.ts} | 0 .../112-unions-of-functions.solution.ts} | 0 .../113-empty-object-type.problem.ts} | 0 .../113-empty-object-type.solution.ts} | 0 ...oblem.ts => 114-typeof-keyword.problem.ts} | 0 ...tion.ts => 114-typeof-keyword.solution.ts} | 0 ...reate-runtime-values-from-types.problem.ts | 0 ...eate-runtime-values-from-types.solution.ts | 0 ...nums-cross-value-and-type-world.problem.ts | 0 ...ums-cross-value-and-type-world.solution.ts | 0 .../117-return-type.problem.ts | 0 .../117-return-type.solution.ts | 0 .../118-parameters-type-helper.problem.ts | 0 .../118-parameters-type-helper.solution.ts | 0 .../119-keyof.problem.ts | 0 .../119-keyof.solution.ts | 0 .../120-indexed-access-types.problem.ts | 0 .../120-indexed-access-types.solution.ts | 0 ...-unions-to-indexed-access-types.problem.ts | 0 ...unions-to-indexed-access-types.solution.ts | 0 ...yof-into-an-indexed-access-type.problem.ts | 0 ...of-into-an-indexed-access-type.solution.ts | 0 ...te-an-enum-from-as-const-object.problem.ts | 0 ...e-an-enum-from-as-const-object.solution.ts | 0 ...-a-union-from-an-as-const-array.problem.ts | 0 ...a-union-from-an-as-const-array.solution.ts | 0 ...-should-i-use-enums-or-as-const.problem.ts | 0 ...should-i-use-enums-or-as-const.solution.ts | 0 65 files changed, 19 insertions(+) rename src/{035-understanding-the-compiler/094-any.problem.ts => 030-classes/094-understand-classes.problem.ts} (100%) rename src/{035-understanding-the-compiler/094-any.solution.ts => 030-classes/094-understand-classes.solution.ts} (100%) rename src/{035-understanding-the-compiler/095-global-typings-use-any.problem.ts => 030-classes/095-public-and-private-properties.problem.ts} (100%) rename src/{035-understanding-the-compiler/095-global-typings-use-any.solution.ts => 030-classes/095-public-and-private-properties.solution.ts} (100%) rename src/{035-understanding-the-compiler/096-as-and-as-any.problem.ts => 030-classes/096-hash-in-javascript.problem.ts} (100%) rename src/{035-understanding-the-compiler/096-as-and-as-any.solution.ts => 030-classes/096-hash-in-javascript.solution.ts} (100%) rename src/{035-understanding-the-compiler/097-limits-of-as.problem.ts => 030-classes/097-optional-class-properties.problem.ts} (100%) rename src/{035-understanding-the-compiler/097-limits-of-as.solution.ts => 030-classes/097-optional-class-properties.solution.ts} (100%) rename src/{035-understanding-the-compiler/098-satisfies.problem.ts => 030-classes/098-readonly-class-properties.problem.ts} (100%) rename src/{035-understanding-the-compiler/098-satisfies.solution.ts => 030-classes/098-readonly-class-properties.solution.ts} (100%) rename src/{035-understanding-the-compiler/099-annotating-errors-a-function-throws.problem.ts => 030-classes/099-auto-assignation.problem.ts} (100%) rename src/{035-understanding-the-compiler/099-annotating-errors-a-function-throws.solution.ts => 030-classes/099-auto-assignation.solution.ts} (100%) rename src/{035-understanding-the-compiler/100-excess-properties-warnings.problem.ts => 030-classes/100-class-methods.problem.ts} (100%) rename src/{035-understanding-the-compiler/100-excess-properties-warnings.solution.ts => 030-classes/100-class-methods.solution.ts} (100%) rename src/{035-understanding-the-compiler/101-object-keys-and-object-entries.problem.ts => 030-classes/101-decorators.problem.ts} (100%) rename src/{035-understanding-the-compiler/101-object-keys-and-object-entries.solution.ts => 030-classes/101-decorators.solution.ts} (100%) rename src/{035-understanding-the-compiler/102-structural-vs-nominal-typing.problem.ts => 030-classes/102-implementing-interfaces.problem.ts} (100%) rename src/{035-understanding-the-compiler/102-structural-vs-nominal-typing.solution.ts => 030-classes/102-implementing-interfaces.solution.ts} (100%) create mode 100644 src/030-classes/plan.md rename src/035-understanding-the-compiler/{103-unions-of-functions.problem.ts => 103-any.problem.ts} (100%) rename src/035-understanding-the-compiler/{103-unions-of-functions.solution.ts => 103-any.solution.ts} (100%) rename src/{040-deriving-types-from-values/104-typeof-keyword.problem.ts => 035-understanding-the-compiler/104-global-typings-use-any.problem.ts} (100%) rename src/{040-deriving-types-from-values/104-typeof-keyword.solution.ts => 035-understanding-the-compiler/104-global-typings-use-any.solution.ts} (100%) rename src/{040-deriving-types-from-values/105-create-runtime-values-from-types.problem.ts => 035-understanding-the-compiler/105-as-and-as-any.problem.ts} (100%) rename src/{040-deriving-types-from-values/105-create-runtime-values-from-types.solution.ts => 035-understanding-the-compiler/105-as-and-as-any.solution.ts} (100%) rename src/{040-deriving-types-from-values/106-return-type.problem.ts => 035-understanding-the-compiler/106-limits-of-as.problem.ts} (100%) rename src/{040-deriving-types-from-values/106-return-type.solution.ts => 035-understanding-the-compiler/106-limits-of-as.solution.ts} (100%) rename src/{040-deriving-types-from-values/107-parameters-type-helper.problem.ts => 035-understanding-the-compiler/107-satisfies.problem.ts} (100%) rename src/{040-deriving-types-from-values/107-parameters-type-helper.solution.ts => 035-understanding-the-compiler/107-satisfies.solution.ts} (100%) rename src/{040-deriving-types-from-values/108-keyof.problem.ts => 035-understanding-the-compiler/108-annotating-errors-a-function-throws.problem.ts} (100%) rename src/{040-deriving-types-from-values/108-keyof.solution.ts => 035-understanding-the-compiler/108-annotating-errors-a-function-throws.solution.ts} (100%) rename src/{040-deriving-types-from-values/109-indexed-access-types.problem.ts => 035-understanding-the-compiler/109-excess-properties-warnings.problem.ts} (100%) rename src/{040-deriving-types-from-values/109-indexed-access-types.solution.ts => 035-understanding-the-compiler/109-excess-properties-warnings.solution.ts} (100%) rename src/{040-deriving-types-from-values/110-pass-unions-to-indexed-access-types.problem.ts => 035-understanding-the-compiler/110-object-keys-and-object-entries.problem.ts} (100%) rename src/{040-deriving-types-from-values/110-pass-unions-to-indexed-access-types.solution.ts => 035-understanding-the-compiler/110-object-keys-and-object-entries.solution.ts} (100%) rename src/{040-deriving-types-from-values/111-pass-keyof-into-an-indexed-access-type.problem.ts => 035-understanding-the-compiler/111-structural-vs-nominal-typing.problem.ts} (100%) rename src/{040-deriving-types-from-values/111-pass-keyof-into-an-indexed-access-type.solution.ts => 035-understanding-the-compiler/111-structural-vs-nominal-typing.solution.ts} (100%) rename src/{040-deriving-types-from-values/112-create-an-enum-from-as-const-object.problem.ts => 035-understanding-the-compiler/112-unions-of-functions.problem.ts} (100%) rename src/{040-deriving-types-from-values/112-create-an-enum-from-as-const-object.solution.ts => 035-understanding-the-compiler/112-unions-of-functions.solution.ts} (100%) rename src/{040-deriving-types-from-values/113-create-a-union-from-an-as-const-array.problem.ts => 035-understanding-the-compiler/113-empty-object-type.problem.ts} (100%) rename src/{040-deriving-types-from-values/113-create-a-union-from-an-as-const-array.solution.ts => 035-understanding-the-compiler/113-empty-object-type.solution.ts} (100%) rename src/040-deriving-types-from-values/{114-should-i-use-enums-or-as-const.problem.ts => 114-typeof-keyword.problem.ts} (100%) rename src/040-deriving-types-from-values/{114-should-i-use-enums-or-as-const.solution.ts => 114-typeof-keyword.solution.ts} (100%) create mode 100644 src/040-deriving-types-from-values/115-create-runtime-values-from-types.problem.ts create mode 100644 src/040-deriving-types-from-values/115-create-runtime-values-from-types.solution.ts create mode 100644 src/040-deriving-types-from-values/116-classes-and-enums-cross-value-and-type-world.problem.ts create mode 100644 src/040-deriving-types-from-values/116-classes-and-enums-cross-value-and-type-world.solution.ts create mode 100644 src/040-deriving-types-from-values/117-return-type.problem.ts create mode 100644 src/040-deriving-types-from-values/117-return-type.solution.ts create mode 100644 src/040-deriving-types-from-values/118-parameters-type-helper.problem.ts create mode 100644 src/040-deriving-types-from-values/118-parameters-type-helper.solution.ts create mode 100644 src/040-deriving-types-from-values/119-keyof.problem.ts create mode 100644 src/040-deriving-types-from-values/119-keyof.solution.ts create mode 100644 src/040-deriving-types-from-values/120-indexed-access-types.problem.ts create mode 100644 src/040-deriving-types-from-values/120-indexed-access-types.solution.ts create mode 100644 src/040-deriving-types-from-values/121-pass-unions-to-indexed-access-types.problem.ts create mode 100644 src/040-deriving-types-from-values/121-pass-unions-to-indexed-access-types.solution.ts create mode 100644 src/040-deriving-types-from-values/122-pass-keyof-into-an-indexed-access-type.problem.ts create mode 100644 src/040-deriving-types-from-values/122-pass-keyof-into-an-indexed-access-type.solution.ts create mode 100644 src/040-deriving-types-from-values/123-create-an-enum-from-as-const-object.problem.ts create mode 100644 src/040-deriving-types-from-values/123-create-an-enum-from-as-const-object.solution.ts create mode 100644 src/040-deriving-types-from-values/124-create-a-union-from-an-as-const-array.problem.ts create mode 100644 src/040-deriving-types-from-values/124-create-a-union-from-an-as-const-array.solution.ts create mode 100644 src/040-deriving-types-from-values/125-should-i-use-enums-or-as-const.problem.ts create mode 100644 src/040-deriving-types-from-values/125-should-i-use-enums-or-as-const.solution.ts diff --git a/src/035-understanding-the-compiler/094-any.problem.ts b/src/030-classes/094-understand-classes.problem.ts similarity index 100% rename from src/035-understanding-the-compiler/094-any.problem.ts rename to src/030-classes/094-understand-classes.problem.ts diff --git a/src/035-understanding-the-compiler/094-any.solution.ts b/src/030-classes/094-understand-classes.solution.ts similarity index 100% rename from src/035-understanding-the-compiler/094-any.solution.ts rename to src/030-classes/094-understand-classes.solution.ts diff --git a/src/035-understanding-the-compiler/095-global-typings-use-any.problem.ts b/src/030-classes/095-public-and-private-properties.problem.ts similarity index 100% rename from src/035-understanding-the-compiler/095-global-typings-use-any.problem.ts rename to src/030-classes/095-public-and-private-properties.problem.ts diff --git a/src/035-understanding-the-compiler/095-global-typings-use-any.solution.ts b/src/030-classes/095-public-and-private-properties.solution.ts similarity index 100% rename from src/035-understanding-the-compiler/095-global-typings-use-any.solution.ts rename to src/030-classes/095-public-and-private-properties.solution.ts diff --git a/src/035-understanding-the-compiler/096-as-and-as-any.problem.ts b/src/030-classes/096-hash-in-javascript.problem.ts similarity index 100% rename from src/035-understanding-the-compiler/096-as-and-as-any.problem.ts rename to src/030-classes/096-hash-in-javascript.problem.ts diff --git a/src/035-understanding-the-compiler/096-as-and-as-any.solution.ts b/src/030-classes/096-hash-in-javascript.solution.ts similarity index 100% rename from src/035-understanding-the-compiler/096-as-and-as-any.solution.ts rename to src/030-classes/096-hash-in-javascript.solution.ts diff --git a/src/035-understanding-the-compiler/097-limits-of-as.problem.ts b/src/030-classes/097-optional-class-properties.problem.ts similarity index 100% rename from src/035-understanding-the-compiler/097-limits-of-as.problem.ts rename to src/030-classes/097-optional-class-properties.problem.ts diff --git a/src/035-understanding-the-compiler/097-limits-of-as.solution.ts b/src/030-classes/097-optional-class-properties.solution.ts similarity index 100% rename from src/035-understanding-the-compiler/097-limits-of-as.solution.ts rename to src/030-classes/097-optional-class-properties.solution.ts diff --git a/src/035-understanding-the-compiler/098-satisfies.problem.ts b/src/030-classes/098-readonly-class-properties.problem.ts similarity index 100% rename from src/035-understanding-the-compiler/098-satisfies.problem.ts rename to src/030-classes/098-readonly-class-properties.problem.ts diff --git a/src/035-understanding-the-compiler/098-satisfies.solution.ts b/src/030-classes/098-readonly-class-properties.solution.ts similarity index 100% rename from src/035-understanding-the-compiler/098-satisfies.solution.ts rename to src/030-classes/098-readonly-class-properties.solution.ts diff --git a/src/035-understanding-the-compiler/099-annotating-errors-a-function-throws.problem.ts b/src/030-classes/099-auto-assignation.problem.ts similarity index 100% rename from src/035-understanding-the-compiler/099-annotating-errors-a-function-throws.problem.ts rename to src/030-classes/099-auto-assignation.problem.ts diff --git a/src/035-understanding-the-compiler/099-annotating-errors-a-function-throws.solution.ts b/src/030-classes/099-auto-assignation.solution.ts similarity index 100% rename from src/035-understanding-the-compiler/099-annotating-errors-a-function-throws.solution.ts rename to src/030-classes/099-auto-assignation.solution.ts diff --git a/src/035-understanding-the-compiler/100-excess-properties-warnings.problem.ts b/src/030-classes/100-class-methods.problem.ts similarity index 100% rename from src/035-understanding-the-compiler/100-excess-properties-warnings.problem.ts rename to src/030-classes/100-class-methods.problem.ts diff --git a/src/035-understanding-the-compiler/100-excess-properties-warnings.solution.ts b/src/030-classes/100-class-methods.solution.ts similarity index 100% rename from src/035-understanding-the-compiler/100-excess-properties-warnings.solution.ts rename to src/030-classes/100-class-methods.solution.ts diff --git a/src/035-understanding-the-compiler/101-object-keys-and-object-entries.problem.ts b/src/030-classes/101-decorators.problem.ts similarity index 100% rename from src/035-understanding-the-compiler/101-object-keys-and-object-entries.problem.ts rename to src/030-classes/101-decorators.problem.ts diff --git a/src/035-understanding-the-compiler/101-object-keys-and-object-entries.solution.ts b/src/030-classes/101-decorators.solution.ts similarity index 100% rename from src/035-understanding-the-compiler/101-object-keys-and-object-entries.solution.ts rename to src/030-classes/101-decorators.solution.ts diff --git a/src/035-understanding-the-compiler/102-structural-vs-nominal-typing.problem.ts b/src/030-classes/102-implementing-interfaces.problem.ts similarity index 100% rename from src/035-understanding-the-compiler/102-structural-vs-nominal-typing.problem.ts rename to src/030-classes/102-implementing-interfaces.problem.ts diff --git a/src/035-understanding-the-compiler/102-structural-vs-nominal-typing.solution.ts b/src/030-classes/102-implementing-interfaces.solution.ts similarity index 100% rename from src/035-understanding-the-compiler/102-structural-vs-nominal-typing.solution.ts rename to src/030-classes/102-implementing-interfaces.solution.ts diff --git a/src/030-classes/plan.md b/src/030-classes/plan.md new file mode 100644 index 0000000..caaaaae --- /dev/null +++ b/src/030-classes/plan.md @@ -0,0 +1,19 @@ +# Title + +Title here! + +## Exercises + +LEARNING GOAL: Understand classes + +LEARNING GOAL: Understand public and private properties + +LEARNING GOAL: Understand # in JavaScript + +LEARNING GOAL: Understand auto assignation inside the constructor. + +LEARNING GOAL: Understand decorators + +LEARNING GOAL: Understand how classes can be used to implement interfaces + +TODO: Look at Goldberg's chapter on classes for inspiration. diff --git a/src/035-understanding-the-compiler/103-unions-of-functions.problem.ts b/src/035-understanding-the-compiler/103-any.problem.ts similarity index 100% rename from src/035-understanding-the-compiler/103-unions-of-functions.problem.ts rename to src/035-understanding-the-compiler/103-any.problem.ts diff --git a/src/035-understanding-the-compiler/103-unions-of-functions.solution.ts b/src/035-understanding-the-compiler/103-any.solution.ts similarity index 100% rename from src/035-understanding-the-compiler/103-unions-of-functions.solution.ts rename to src/035-understanding-the-compiler/103-any.solution.ts diff --git a/src/040-deriving-types-from-values/104-typeof-keyword.problem.ts b/src/035-understanding-the-compiler/104-global-typings-use-any.problem.ts similarity index 100% rename from src/040-deriving-types-from-values/104-typeof-keyword.problem.ts rename to src/035-understanding-the-compiler/104-global-typings-use-any.problem.ts diff --git a/src/040-deriving-types-from-values/104-typeof-keyword.solution.ts b/src/035-understanding-the-compiler/104-global-typings-use-any.solution.ts similarity index 100% rename from src/040-deriving-types-from-values/104-typeof-keyword.solution.ts rename to src/035-understanding-the-compiler/104-global-typings-use-any.solution.ts diff --git a/src/040-deriving-types-from-values/105-create-runtime-values-from-types.problem.ts b/src/035-understanding-the-compiler/105-as-and-as-any.problem.ts similarity index 100% rename from src/040-deriving-types-from-values/105-create-runtime-values-from-types.problem.ts rename to src/035-understanding-the-compiler/105-as-and-as-any.problem.ts diff --git a/src/040-deriving-types-from-values/105-create-runtime-values-from-types.solution.ts b/src/035-understanding-the-compiler/105-as-and-as-any.solution.ts similarity index 100% rename from src/040-deriving-types-from-values/105-create-runtime-values-from-types.solution.ts rename to src/035-understanding-the-compiler/105-as-and-as-any.solution.ts diff --git a/src/040-deriving-types-from-values/106-return-type.problem.ts b/src/035-understanding-the-compiler/106-limits-of-as.problem.ts similarity index 100% rename from src/040-deriving-types-from-values/106-return-type.problem.ts rename to src/035-understanding-the-compiler/106-limits-of-as.problem.ts diff --git a/src/040-deriving-types-from-values/106-return-type.solution.ts b/src/035-understanding-the-compiler/106-limits-of-as.solution.ts similarity index 100% rename from src/040-deriving-types-from-values/106-return-type.solution.ts rename to src/035-understanding-the-compiler/106-limits-of-as.solution.ts diff --git a/src/040-deriving-types-from-values/107-parameters-type-helper.problem.ts b/src/035-understanding-the-compiler/107-satisfies.problem.ts similarity index 100% rename from src/040-deriving-types-from-values/107-parameters-type-helper.problem.ts rename to src/035-understanding-the-compiler/107-satisfies.problem.ts diff --git a/src/040-deriving-types-from-values/107-parameters-type-helper.solution.ts b/src/035-understanding-the-compiler/107-satisfies.solution.ts similarity index 100% rename from src/040-deriving-types-from-values/107-parameters-type-helper.solution.ts rename to src/035-understanding-the-compiler/107-satisfies.solution.ts diff --git a/src/040-deriving-types-from-values/108-keyof.problem.ts b/src/035-understanding-the-compiler/108-annotating-errors-a-function-throws.problem.ts similarity index 100% rename from src/040-deriving-types-from-values/108-keyof.problem.ts rename to src/035-understanding-the-compiler/108-annotating-errors-a-function-throws.problem.ts diff --git a/src/040-deriving-types-from-values/108-keyof.solution.ts b/src/035-understanding-the-compiler/108-annotating-errors-a-function-throws.solution.ts similarity index 100% rename from src/040-deriving-types-from-values/108-keyof.solution.ts rename to src/035-understanding-the-compiler/108-annotating-errors-a-function-throws.solution.ts diff --git a/src/040-deriving-types-from-values/109-indexed-access-types.problem.ts b/src/035-understanding-the-compiler/109-excess-properties-warnings.problem.ts similarity index 100% rename from src/040-deriving-types-from-values/109-indexed-access-types.problem.ts rename to src/035-understanding-the-compiler/109-excess-properties-warnings.problem.ts diff --git a/src/040-deriving-types-from-values/109-indexed-access-types.solution.ts b/src/035-understanding-the-compiler/109-excess-properties-warnings.solution.ts similarity index 100% rename from src/040-deriving-types-from-values/109-indexed-access-types.solution.ts rename to src/035-understanding-the-compiler/109-excess-properties-warnings.solution.ts diff --git a/src/040-deriving-types-from-values/110-pass-unions-to-indexed-access-types.problem.ts b/src/035-understanding-the-compiler/110-object-keys-and-object-entries.problem.ts similarity index 100% rename from src/040-deriving-types-from-values/110-pass-unions-to-indexed-access-types.problem.ts rename to src/035-understanding-the-compiler/110-object-keys-and-object-entries.problem.ts diff --git a/src/040-deriving-types-from-values/110-pass-unions-to-indexed-access-types.solution.ts b/src/035-understanding-the-compiler/110-object-keys-and-object-entries.solution.ts similarity index 100% rename from src/040-deriving-types-from-values/110-pass-unions-to-indexed-access-types.solution.ts rename to src/035-understanding-the-compiler/110-object-keys-and-object-entries.solution.ts diff --git a/src/040-deriving-types-from-values/111-pass-keyof-into-an-indexed-access-type.problem.ts b/src/035-understanding-the-compiler/111-structural-vs-nominal-typing.problem.ts similarity index 100% rename from src/040-deriving-types-from-values/111-pass-keyof-into-an-indexed-access-type.problem.ts rename to src/035-understanding-the-compiler/111-structural-vs-nominal-typing.problem.ts diff --git a/src/040-deriving-types-from-values/111-pass-keyof-into-an-indexed-access-type.solution.ts b/src/035-understanding-the-compiler/111-structural-vs-nominal-typing.solution.ts similarity index 100% rename from src/040-deriving-types-from-values/111-pass-keyof-into-an-indexed-access-type.solution.ts rename to src/035-understanding-the-compiler/111-structural-vs-nominal-typing.solution.ts diff --git a/src/040-deriving-types-from-values/112-create-an-enum-from-as-const-object.problem.ts b/src/035-understanding-the-compiler/112-unions-of-functions.problem.ts similarity index 100% rename from src/040-deriving-types-from-values/112-create-an-enum-from-as-const-object.problem.ts rename to src/035-understanding-the-compiler/112-unions-of-functions.problem.ts diff --git a/src/040-deriving-types-from-values/112-create-an-enum-from-as-const-object.solution.ts b/src/035-understanding-the-compiler/112-unions-of-functions.solution.ts similarity index 100% rename from src/040-deriving-types-from-values/112-create-an-enum-from-as-const-object.solution.ts rename to src/035-understanding-the-compiler/112-unions-of-functions.solution.ts diff --git a/src/040-deriving-types-from-values/113-create-a-union-from-an-as-const-array.problem.ts b/src/035-understanding-the-compiler/113-empty-object-type.problem.ts similarity index 100% rename from src/040-deriving-types-from-values/113-create-a-union-from-an-as-const-array.problem.ts rename to src/035-understanding-the-compiler/113-empty-object-type.problem.ts diff --git a/src/040-deriving-types-from-values/113-create-a-union-from-an-as-const-array.solution.ts b/src/035-understanding-the-compiler/113-empty-object-type.solution.ts similarity index 100% rename from src/040-deriving-types-from-values/113-create-a-union-from-an-as-const-array.solution.ts rename to src/035-understanding-the-compiler/113-empty-object-type.solution.ts diff --git a/src/040-deriving-types-from-values/114-should-i-use-enums-or-as-const.problem.ts b/src/040-deriving-types-from-values/114-typeof-keyword.problem.ts similarity index 100% rename from src/040-deriving-types-from-values/114-should-i-use-enums-or-as-const.problem.ts rename to src/040-deriving-types-from-values/114-typeof-keyword.problem.ts diff --git a/src/040-deriving-types-from-values/114-should-i-use-enums-or-as-const.solution.ts b/src/040-deriving-types-from-values/114-typeof-keyword.solution.ts similarity index 100% rename from src/040-deriving-types-from-values/114-should-i-use-enums-or-as-const.solution.ts rename to src/040-deriving-types-from-values/114-typeof-keyword.solution.ts diff --git a/src/040-deriving-types-from-values/115-create-runtime-values-from-types.problem.ts b/src/040-deriving-types-from-values/115-create-runtime-values-from-types.problem.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/040-deriving-types-from-values/115-create-runtime-values-from-types.solution.ts b/src/040-deriving-types-from-values/115-create-runtime-values-from-types.solution.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/040-deriving-types-from-values/116-classes-and-enums-cross-value-and-type-world.problem.ts b/src/040-deriving-types-from-values/116-classes-and-enums-cross-value-and-type-world.problem.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/040-deriving-types-from-values/116-classes-and-enums-cross-value-and-type-world.solution.ts b/src/040-deriving-types-from-values/116-classes-and-enums-cross-value-and-type-world.solution.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/040-deriving-types-from-values/117-return-type.problem.ts b/src/040-deriving-types-from-values/117-return-type.problem.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/040-deriving-types-from-values/117-return-type.solution.ts b/src/040-deriving-types-from-values/117-return-type.solution.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/040-deriving-types-from-values/118-parameters-type-helper.problem.ts b/src/040-deriving-types-from-values/118-parameters-type-helper.problem.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/040-deriving-types-from-values/118-parameters-type-helper.solution.ts b/src/040-deriving-types-from-values/118-parameters-type-helper.solution.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/040-deriving-types-from-values/119-keyof.problem.ts b/src/040-deriving-types-from-values/119-keyof.problem.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/040-deriving-types-from-values/119-keyof.solution.ts b/src/040-deriving-types-from-values/119-keyof.solution.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/040-deriving-types-from-values/120-indexed-access-types.problem.ts b/src/040-deriving-types-from-values/120-indexed-access-types.problem.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/040-deriving-types-from-values/120-indexed-access-types.solution.ts b/src/040-deriving-types-from-values/120-indexed-access-types.solution.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/040-deriving-types-from-values/121-pass-unions-to-indexed-access-types.problem.ts b/src/040-deriving-types-from-values/121-pass-unions-to-indexed-access-types.problem.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/040-deriving-types-from-values/121-pass-unions-to-indexed-access-types.solution.ts b/src/040-deriving-types-from-values/121-pass-unions-to-indexed-access-types.solution.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/040-deriving-types-from-values/122-pass-keyof-into-an-indexed-access-type.problem.ts b/src/040-deriving-types-from-values/122-pass-keyof-into-an-indexed-access-type.problem.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/040-deriving-types-from-values/122-pass-keyof-into-an-indexed-access-type.solution.ts b/src/040-deriving-types-from-values/122-pass-keyof-into-an-indexed-access-type.solution.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/040-deriving-types-from-values/123-create-an-enum-from-as-const-object.problem.ts b/src/040-deriving-types-from-values/123-create-an-enum-from-as-const-object.problem.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/040-deriving-types-from-values/123-create-an-enum-from-as-const-object.solution.ts b/src/040-deriving-types-from-values/123-create-an-enum-from-as-const-object.solution.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/040-deriving-types-from-values/124-create-a-union-from-an-as-const-array.problem.ts b/src/040-deriving-types-from-values/124-create-a-union-from-an-as-const-array.problem.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/040-deriving-types-from-values/124-create-a-union-from-an-as-const-array.solution.ts b/src/040-deriving-types-from-values/124-create-a-union-from-an-as-const-array.solution.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/040-deriving-types-from-values/125-should-i-use-enums-or-as-const.problem.ts b/src/040-deriving-types-from-values/125-should-i-use-enums-or-as-const.problem.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/040-deriving-types-from-values/125-should-i-use-enums-or-as-const.solution.ts b/src/040-deriving-types-from-values/125-should-i-use-enums-or-as-const.solution.ts new file mode 100644 index 0000000..e69de29