From fe82d8e0aa4e41743750aea1a0c7897e72eacfac Mon Sep 17 00:00:00 2001 From: Matt Pocock Date: Tue, 29 Aug 2023 14:29:59 +0100 Subject: [PATCH] 2023-08-29T13:29:59.849Z --- plan.md | 1 + ...union-as-keys.problem.ts => 078-property-key-type.problem.ts} | 0 ...ion-as-keys.solution.ts => 078-property-key-type.solution.ts} | 0 .../079-record-type-with-union-as-keys.problem.ts} | 0 .../079-record-type-with-union-as-keys.solution.ts} | 0 ...oblem.ts => 080-declaration-merging-of-interfaces.problem.ts} | 0 ...tion.ts => 080-declaration-merging-of-interfaces.solution.ts} | 0 ...ck-type-helper.problem.ts => 081-pick-type-helper.problem.ts} | 0 ...e-helper.solution.1.ts => 081-pick-type-helper.solution.1.ts} | 0 ...e-helper.solution.2.ts => 081-pick-type-helper.solution.2.ts} | 0 ...roblem.ts => 082-common-keys-of-unions-of-objects.problem.ts} | 0 ...ution.ts => 082-common-keys-of-unions-of-objects.solution.ts} | 0 ...it-type-helper.problem.ts => 083-omit-type-helper.problem.ts} | 0 ...e-helper.solution.1.ts => 083-omit-type-helper.solution.1.ts} | 0 ...e-helper.solution.2.ts => 083-omit-type-helper.solution.2.ts} | 0 ...mit.explainer.ts => 084-no-autocomplete-on-omit.explainer.ts} | 0 ...te.explainer.1.ts => 085-omit-cant-distribute.explainer.1.ts} | 0 ...te.explainer.2.ts => 085-omit-cant-distribute.explainer.2.ts} | 0 ...roblem.ts => 086-omit-or-pick-more-than-one-thing.problem.ts} | 0 ...n.1.ts => 086-omit-or-pick-more-than-one-thing.solution.1.ts} | 0 ...n.2.ts => 086-omit-or-pick-more-than-one-thing.solution.2.ts} | 0 ...type-helper.problem.ts => 087-partial-type-helper.problem.ts} | 0 ...pe-helper.solution.ts => 087-partial-type-helper.solution.ts} | 0 ...helper.explainer.ts => 088-required-type-helper.explainer.ts} | 0 ...ference.problem.ts => 089-let-and-const-inference.problem.ts} | 0 ...rence.solution.ts => 089-let-and-const-inference.solution.ts} | 0 ...rties.problem.ts => 090-object-property-inference.problem.ts} | 0 ...ies.solution.ts => 090-object-property-inference.solution.ts} | 0 ...s.problem.ts => 091-narrowing-in-different-scopes.problem.ts} | 0 ...tion.1.ts => 091-narrowing-in-different-scopes.solution.1.ts} | 0 ...tion.2.ts => 091-narrowing-in-different-scopes.solution.2.ts} | 0 ...onst.problem.ts => 092-readonly-object-properties.problem.ts} | 0 ...st.solution.ts => 092-readonly-object-properties.solution.ts} | 0 ...object-freeze.problem.ts => 093-intro-to-as-const.problem.ts} | 0 ...ject-freeze.solution.ts => 093-intro-to-as-const.solution.ts} | 0 ...rrays.problem.ts => 094-as-const-vs-object-freeze.problem.ts} | 0 ...ays.solution.ts => 094-as-const-vs-object-freeze.solution.ts} | 0 ...readonly-arrays.problem.ts => 095-readonly-arrays.problem.ts} | 0 ...adonly-arrays.solution.ts => 095-readonly-arrays.solution.ts} | 0 ...ays.problem.ts => 096-includes-on-readonly-arrays.problem.ts} | 0 ...s.solution.ts => 096-includes-on-readonly-arrays.solution.ts} | 0 ...oblem.ts => 097-readonly-arrays-vs-mutable-arrays.problem.ts} | 0 ...tion.ts => 097-readonly-arrays-vs-mutable-arrays.solution.ts} | 0 ...s => 098-as-const-to-make-functions-infer-a-tuple.problem.ts} | 0 ... => 098-as-const-to-make-functions-infer-a-tuple.solution.ts} | 0 ...n-make-strings-infer-as-their-literals-in-objects.problem.ts} | 0 ...-make-strings-infer-as-their-literals-in-objects.solution.ts} | 0 ...e-properties.problem.ts => 100-understand-classes.problem.ts} | 0 ...properties.solution.ts => 100-understand-classes.solution.ts} | 0 ...t.problem.ts => 101-public-and-private-properties.problem.ts} | 0 ...solution.ts => 101-public-and-private-properties.solution.ts} | 0 ...s-properties.problem.ts => 102-hash-in-javascript.problem.ts} | 0 ...properties.solution.ts => 102-hash-in-javascript.solution.ts} | 0 ...rties.problem.ts => 103-optional-class-properties.problem.ts} | 0 ...ies.solution.ts => 103-optional-class-properties.solution.ts} | 0 ...thods.problem.ts => 104-readonly-class-properties.problem.ts} | 0 ...ods.solution.ts => 104-readonly-class-properties.solution.ts} | 0 .../{105-decorators.problem.ts => 105-class-methods.problem.ts} | 0 ...{105-decorators.solution.ts => 105-class-methods.solution.ts} | 0 ...lementing-interfaces.problem.ts => 106-decorators.problem.ts} | 0 ...menting-interfaces.solution.ts => 106-decorators.solution.ts} | 0 ...nctions.problem.ts => 107-implementing-interfaces.problem.ts} | 0 ...tions.solution.ts => 107-implementing-interfaces.solution.ts} | 0 ...ctions.problem.ts => 108-typing-this-in-functions.problem.ts} | 0 ...ions.solution.ts => 108-typing-this-in-functions.solution.ts} | 0 .../109-can-you-type-this-in-functions.problem.ts} | 0 .../109-can-you-type-this-in-functions.solution.ts} | 0 ...ums.problem.ts => 110-auto-assignation-in-classes.problem.ts} | 0 ...s.solution.ts => 110-auto-assignation-in-classes.solution.ts} | 0 .../{111-const-enums.problem.ts => 111-enums.problem.ts} | 0 .../{111-const-enums.solution.ts => 111-enums.solution.ts} | 0 .../{112-namespaces.problem.ts => 112-const-enums.problem.ts} | 0 .../{112-namespaces.solution.ts => 112-const-enums.solution.ts} | 0 ...d-as-types-or-values.problem.ts => 113-namespaces.problem.ts} | 0 ...as-types-or-values.solution.ts => 113-namespaces.solution.ts} | 0 ... => 114-namespaces-can-be-used-as-types-or-values.problem.ts} | 0 ...=> 114-namespaces-can-be-used-as-types-or-values.solution.ts} | 0 ...roblem.ts => 115-namespaces-can-declaration-merge.problem.ts} | 0 ...ution.ts => 115-namespaces-can-declaration-merge.solution.ts} | 0 ...nterfaces-within-namespaces-can-declaration-merge.problem.ts} | 0 ...terfaces-within-namespaces-can-declaration-merge.solution.ts} | 0 .../117-should-you-use-namespaces.problem.ts} | 0 .../117-should-you-use-namespaces.solution.ts} | 0 ...{118-global-typings-use-any.problem.ts => 118-any.problem.ts} | 0 ...18-global-typings-use-any.solution.ts => 118-any.solution.ts} | 0 ...d-as-any.problem.ts => 119-global-typings-use-any.problem.ts} | 0 ...as-any.solution.ts => 119-global-typings-use-any.solution.ts} | 0 ...{120-limits-of-as.problem.ts => 120-as-and-as-any.problem.ts} | 0 ...20-limits-of-as.solution.ts => 120-as-and-as-any.solution.ts} | 0 .../{121-ts-ignore.problem.ts => 121-limits-of-as.problem.ts} | 0 .../{121-ts-ignore.solution.ts => 121-limits-of-as.solution.ts} | 0 .../{122-ts-expect-error.problem.ts => 122-ts-ignore.problem.ts} | 0 ...122-ts-expect-error.solution.ts => 122-ts-ignore.solution.ts} | 0 .../{123-satisfies.problem.ts => 123-ts-expect-error.problem.ts} | 0 ...123-satisfies.solution.ts => 123-ts-expect-error.solution.ts} | 0 ...tisfies-with-as-const.problem.ts => 124-satisfies.problem.ts} | 0 ...sfies-with-as-const.solution.ts => 124-satisfies.solution.ts} | 0 ...-throws.problem.ts => 125-satisfies-with-as-const.problem.ts} | 0 ...hrows.solution.ts => 125-satisfies-with-as-const.solution.ts} | 0 ...lem.ts => 126-annotating-errors-a-function-throws.problem.ts} | 0 ...on.ts => 126-annotating-errors-a-function-throws.solution.ts} | 0 ...ries.problem.ts => 127-excess-properties-warnings.problem.ts} | 0 ...es.solution.ts => 127-excess-properties-warnings.solution.ts} | 0 ....problem.ts => 128-object-keys-and-object-entries.problem.ts} | 0 ...olution.ts => 128-object-keys-and-object-entries.solution.ts} | 0 ...ng.problem.ts => 129-structural-vs-nominal-typing.problem.ts} | 0 ....solution.ts => 129-structural-vs-nominal-typing.solution.ts} | 0 ...oblem.ts => 130-how-enums-break-structural-typing.problem.ts} | 0 ...tion.ts => 130-how-enums-break-structural-typing.solution.ts} | 0 ...object-type.problem.ts => 131-unions-of-functions.problem.ts} | 0 ...ject-type.solution.ts => 131-unions-of-functions.solution.ts} | 0 .../132-empty-object-type.problem.ts} | 0 .../132-empty-object-type.solution.ts} | 0 .../133-truly-empty-object.problem.ts} | 0 .../133-truly-empty-object.solution.ts} | 0 ...e-and-type-world.problem.ts => 134-typeof-keyword.problem.ts} | 0 ...and-type-world.solution.ts => 134-typeof-keyword.solution.ts} | 0 ...roblem.ts => 135-create-runtime-values-from-types.problem.ts} | 0 ...ution.ts => 135-create-runtime-values-from-types.solution.ts} | 0 ... 136-classes-and-enums-cross-value-and-type-world.problem.ts} | 0 ...136-classes-and-enums-cross-value-and-type-world.solution.ts} | 0 ...oblem.ts => 137-this-crosses-value-and-type-world.problem.ts} | 0 ...tion.ts => 137-this-crosses-value-and-type-world.solution.ts} | 0 .../{138-keyof.problem.ts => 138-return-type.problem.ts} | 0 .../{138-keyof.solution.ts => 138-return-type.solution.ts} | 0 ...ss-types.problem.ts => 139-parameters-type-helper.problem.ts} | 0 ...-types.solution.ts => 139-parameters-type-helper.solution.ts} | 0 ...s-to-indexed-access-types.problem.ts => 140-keyof.problem.ts} | 0 ...to-indexed-access-types.solution.ts => 140-keyof.solution.ts} | 0 ...ccess-type.problem.ts => 141-indexed-access-types.problem.ts} | 0 ...ess-type.solution.ts => 141-indexed-access-types.solution.ts} | 0 ...lem.ts => 142-pass-unions-to-indexed-access-types.problem.ts} | 0 ...on.ts => 142-pass-unions-to-indexed-access-types.solution.ts} | 0 ....ts => 143-pass-keyof-into-an-indexed-access-type.problem.ts} | 0 ...ts => 143-pass-keyof-into-an-indexed-access-type.solution.ts} | 0 ...lem.ts => 144-create-an-enum-from-as-const-object.problem.ts} | 0 ...on.ts => 144-create-an-enum-from-as-const-object.solution.ts} | 0 ...m.ts => 145-create-a-union-from-an-as-const-array.problem.ts} | 0 ....ts => 145-create-a-union-from-an-as-const-array.solution.ts} | 0 .../146-should-i-use-enums-or-as-const.problem.ts} | 0 .../146-should-i-use-enums-or-as-const.solution.ts} | 0 .../147-using-numeric-comparators-on-enums.problem.ts} | 0 .../147-using-numeric-comparators-on-enums.solution.ts} | 0 ...olated-modules.problem.ts => 148-module-or-script.problem.ts} | 0 ...ated-modules.solution.ts => 148-module-or-script.solution.ts} | 0 ...s-vs-esm.problem.ts => 149-module-detection-force.problem.ts} | 0 ...vs-esm.solution.ts => 149-module-detection-force.solution.ts} | 0 ...er-or-nodenext.problem.ts => 150-isolated-modules.problem.ts} | 0 ...-or-nodenext.solution.ts => 150-isolated-modules.solution.ts} | 0 ...51-declaration-files.problem.ts => 151-cjs-vs-esm.problem.ts} | 0 ...-declaration-files.solution.ts => 151-cjs-vs-esm.solution.ts} | 0 ...m.ts => 152-module-resolution-bundler-or-nodenext.problem.ts} | 0 ....ts => 152-module-resolution-bundler-or-nodenext.solution.ts} | 0 ...es-or-scripts.problem.ts => 153-declaration-files.problem.ts} | 0 ...-or-scripts.solution.ts => 153-declaration-files.solution.ts} | 0 ...pe-js-files.problem.ts => 154-skip-lib-check-true.problem.ts} | 0 ...-js-files.solution.ts => 154-skip-lib-check-true.solution.ts} | 0 ...> 155-declaration-files-can-be-modules-or-scripts.problem.ts} | 0 ... 155-declaration-files-can-be-modules-or-scripts.solution.ts} | 0 ...56-declaration-files-can-be-used-to-type-js-files.problem.ts} | 0 ...6-declaration-files-can-be-used-to-type-js-files.solution.ts} | 0 ...roblem.ts => 157-should-you-use-declaration-files.problem.ts} | 0 ...ution.ts => 157-should-you-use-declaration-files.solution.ts} | 0 .../158-resolve-json-module.problem.ts} | 0 .../158-resolve-json-module.solution.ts} | 0 .../159-json-d-ts-files.problem.ts} | 0 .../159-json-d-ts-files.solution.ts} | 0 ...oblem.ts => 160-ambient-context-and-declare-const.problem.ts} | 0 ...tion.ts => 160-ambient-context-and-declare-const.solution.ts} | 0 ...declaration-file.problem.ts => 161-declare-global.problem.ts} | 0 ...claration-file.solution.ts => 161-declare-global.solution.ts} | 0 ...m.ts => 162-globals-are-tied-to-a-single-tsconfig.problem.ts} | 0 ....ts => 162-globals-are-tied-to-a-single-tsconfig.solution.ts} | 0 ...blem.ts => 163-declare-global-or-declaration-file.problem.ts} | 0 ...ion.ts => 163-declare-global-or-declaration-file.solution.ts} | 0 ...modifying-window.problem.ts => 164-declare-module.problem.ts} | 0 ...difying-window.solution.ts => 164-declare-module.solution.ts} | 0 ...this.problem.ts => 165-wildcard-in-declare-module.problem.ts} | 0 ...is.solution.ts => 165-wildcard-in-declare-module.solution.ts} | 0 ...ng-process-env.problem.ts => 166-modifying-window.problem.ts} | 0 ...-process-env.solution.ts => 166-modifying-window.solution.ts} | 0 .../167-modifying-globalthis.problem.ts} | 0 .../167-modifying-globalthis.solution.ts} | 0 .../168-modifying-process-env.problem.ts} | 0 .../168-modifying-process-env.solution.ts} | 0 ...clare-module-for-overriding-third-party-libraries.problem.ts} | 0 ...lare-module-for-overriding-third-party-libraries.solution.ts} | 0 .../{170-lib-dom-d-ts.problem.ts => 170-lib-d-ts.problem.ts} | 0 .../{170-lib-dom-d-ts.solution.ts => 170-lib-d-ts.solution.ts} | 0 ...problem.ts => 171-using-target-to-change-lib-d-ts.problem.ts} | 0 ...lution.ts => 171-using-target-to-change-lib-d-ts.solution.ts} | 0 ...-roots-in-tsconfig.problem.ts => 172-lib-dom-d-ts.problem.ts} | 0 ...oots-in-tsconfig.solution.ts => 172-lib-dom-d-ts.solution.ts} | 0 ...ith-libraries.problem.ts => 173-third-party-types.problem.ts} | 0 ...h-libraries.solution.ts => 173-third-party-types.solution.ts} | 0 .../174-type-roots-in-tsconfig.problem.ts} | 0 .../174-type-roots-in-tsconfig.solution.ts} | 0 .../175-types-that-ship-with-libraries.problem.ts} | 0 .../175-types-that-ship-with-libraries.solution.ts} | 0 ....problem.ts => 176-domain-modelling-in-typescript.problem.ts} | 0 ...olution.ts => 176-domain-modelling-in-typescript.solution.ts} | 0 ...arameters.problem.ts => 177-intro-to-helper-types.problem.ts} | 0 ...ameters.solution.ts => 177-intro-to-helper-types.solution.ts} | 0 ...raints.problem.ts => 178-multiple-type-parameters.problem.ts} | 0 ...ints.solution.ts => 178-multiple-type-parameters.solution.ts} | 0 ...of-omit.problem.ts => 179-default-type-parameters.problem.ts} | 0 ...-omit.solution.ts => 179-default-type-parameters.solution.ts} | 0 ...l-types.problem.ts => 180-type-helper-constraints.problem.ts} | 0 ...types.solution.ts => 180-type-helper-constraints.solution.ts} | 0 ...l-types.problem.ts => 181-tighter-version-of-omit.problem.ts} | 0 ...types.solution.ts => 181-tighter-version-of-omit.solution.ts} | 0 ...ed-types.problem.ts => 182-template-literal-types.problem.ts} | 0 ...-types.solution.ts => 182-template-literal-types.solution.ts} | 0 ...s => 183-passing-unions-to-template-literal-types.problem.ts} | 0 ... => 183-passing-unions-to-template-literal-types.solution.ts} | 0 .../184-mapped-types.problem.ts} | 0 .../184-mapped-types.solution.ts} | 0 .../185-as-in-mapped-types.problem.ts} | 0 .../185-as-in-mapped-types.solution.ts} | 0 ...-files.problem.ts => 186-introduction-to-tsconfig.problem.ts} | 0 ...iles.solution.ts => 186-introduction-to-tsconfig.solution.ts} | 0 ...onfig-json-files.problem.ts => 187-tsconfig-bases.problem.ts} | 0 ...fig-json-files.solution.ts => 187-tsconfig-bases.solution.ts} | 0 ...es.problem.ts => 188-multiple-tsconfig-json-files.problem.ts} | 0 ....solution.ts => 188-multiple-tsconfig-json-files.solution.ts} | 0 ...s => 189-extending-from-other-tsconfig-json-files.problem.ts} | 0 ... => 189-extending-from-other-tsconfig-json-files.solution.ts} | 0 ...-strict-mode.problem.ts => 190-project-references.problem.ts} | 0 ...trict-mode.solution.ts => 190-project-references.solution.ts} | 0 ...no-unchecked-indexed-access.problem.ts => 191-jsx.problem.ts} | 0 ...-unchecked-indexed-access.solution.ts => 191-jsx.solution.ts} | 0 ....problem.ts => 192-rules-that-make-up-strict-mode.problem.ts} | 0 ...olution.ts => 192-rules-that-make-up-strict-mode.solution.ts} | 0 ...ode.problem.ts => 193-no-unchecked-indexed-access.problem.ts} | 0 ...e.solution.ts => 193-no-unchecked-indexed-access.solution.ts} | 0 ...4-creating-declaration-files-and-declaration-maps.problem.ts} | 0 ...-creating-declaration-files-and-declaration-maps.solution.ts} | 0 ...files.problem.ts => 195-setting-up-types-for-node.problem.ts} | 0 ...les.solution.ts => 195-setting-up-types-for-node.solution.ts} | 0 ...problem.ts => 196-set-up-types-for-simple-scripts.problem.ts} | 0 ...lution.ts => 196-set-up-types-for-simple-scripts.solution.ts} | 0 .../197-set-up-types-for-test-files.problem.ts} | 0 .../197-set-up-types-for-test-files.solution.ts} | 0 .../198-set-up-types-for-bundled-web-app.problem.ts} | 0 .../198-set-up-types-for-bundled-web-app.solution.ts} | 0 ...tions.problem.ts => 199-intro-to-the-utils-folder.problem.ts} | 0 ...ons.solution.ts => 199-intro-to-the-utils-folder.solution.ts} | 0 ...lem.ts => 200-generic-functions-without-inference.problem.ts} | 0 ...on.ts => 200-generic-functions-without-inference.solution.ts} | 0 ... 201-type-parameter-defaults-in-generic-functions.problem.ts} | 0 ...201-type-parameter-defaults-in-generic-functions.solution.ts} | 0 ...type-parameter-constraints-with-generic-functions.problem.ts} | 0 ...ype-parameter-constraints-with-generic-functions.solution.ts} | 0 ...roblem.ts => 203-generic-functions-with-inference.problem.ts} | 0 ...ution.ts => 203-generic-functions-with-inference.solution.ts} | 0 ...dicates.problem.ts => 204-multiple-type-arguments.problem.ts} | 0 ...cates.solution.ts => 204-multiple-type-arguments.solution.ts} | 0 ...ctions.problem.ts => 205-create-group-by-function.problem.ts} | 0 ...ions.solution.ts => 205-create-group-by-function.solution.ts} | 0 .../206-type-predicates.problem.ts} | 0 .../206-type-predicates.solution.ts} | 0 .../207-assertion-functions.problem.ts} | 0 .../207-assertion-functions.solution.ts} | 0 .../208-function-overloads.problem.ts} | 0 .../208-function-overloads.solution.ts} | 0 ...tion-of-types.problem.ts => 209-setting-up-eslint.problem.ts} | 0 ...on-of-types.solution.ts => 209-setting-up-eslint.solution.ts} | 0 ...-rule-or-not.problem.ts => 210-hungarian-notation.problem.ts} | 0 ...ule-or-not.solution.ts => 210-hungarian-notation.solution.ts} | 0 ...-or-not.problem.ts => 211-where-to-put-your-types.problem.ts} | 0 ...r-not.solution.ts => 211-where-to-put-your-types.solution.ts} | 0 ...xpect-error.problem.ts => 212-colocation-of-types.problem.ts} | 0 ...ect-error.solution.ts => 212-colocation-of-types.solution.ts} | 0 ...t-type.problem.ts => 213-explicit-any-rule-or-not.problem.ts} | 0 ...type.solution.ts => 213-explicit-any-rule-or-not.solution.ts} | 0 .../214-explicit-return-types-or-not.problem.ts} | 0 .../214-explicit-return-types-or-not.solution.ts} | 0 .../215-any-vs-ts-ignore-vs-ts-expect-error.problem.ts} | 0 .../215-any-vs-ts-ignore-vs-ts-expect-error.solution.ts} | 0 .../216-result-type.problem.ts} | 0 .../216-result-type.solution.ts} | 0 ...217-dont-declare-type-and-value-with-the-same-name.problem.ts | 0 ...17-dont-declare-type-and-value-with-the-same-name.solution.ts | 0 src/090-the-style-guide/218-types-vs-interfaces.problem.ts | 0 src/090-the-style-guide/218-types-vs-interfaces.solution.ts | 0 .../219-strict-file-by-file-vs-ramp-up-strictness.problem.ts | 0 .../219-strict-file-by-file-vs-ramp-up-strictness.solution.ts | 0 .../220-dependencies-first.problem.ts | 0 .../220-dependencies-first.solution.ts | 0 src/095-migrating-from-javascript/221-madge.problem.ts | 0 src/095-migrating-from-javascript/221-madge.solution.ts | 0 291 files changed, 1 insertion(+) create mode 100644 plan.md rename src/020-objects/{078-record-type-with-union-as-keys.problem.ts => 078-property-key-type.problem.ts} (100%) rename src/020-objects/{078-record-type-with-union-as-keys.solution.ts => 078-property-key-type.solution.ts} (100%) rename src/{028-mutability/088-let-and-const-inference.problem.ts => 020-objects/079-record-type-with-union-as-keys.problem.ts} (100%) rename src/{028-mutability/088-let-and-const-inference.solution.ts => 020-objects/079-record-type-with-union-as-keys.solution.ts} (100%) rename src/020-objects/{079-declaration-merging-of-interfaces.problem.ts => 080-declaration-merging-of-interfaces.problem.ts} (100%) rename src/020-objects/{079-declaration-merging-of-interfaces.solution.ts => 080-declaration-merging-of-interfaces.solution.ts} (100%) rename src/020-objects/{080-pick-type-helper.problem.ts => 081-pick-type-helper.problem.ts} (100%) rename src/020-objects/{080-pick-type-helper.solution.1.ts => 081-pick-type-helper.solution.1.ts} (100%) rename src/020-objects/{080-pick-type-helper.solution.2.ts => 081-pick-type-helper.solution.2.ts} (100%) rename src/020-objects/{081-common-keys-of-unions-of-objects.problem.ts => 082-common-keys-of-unions-of-objects.problem.ts} (100%) rename src/020-objects/{081-common-keys-of-unions-of-objects.solution.ts => 082-common-keys-of-unions-of-objects.solution.ts} (100%) rename src/020-objects/{082-omit-type-helper.problem.ts => 083-omit-type-helper.problem.ts} (100%) rename src/020-objects/{082-omit-type-helper.solution.1.ts => 083-omit-type-helper.solution.1.ts} (100%) rename src/020-objects/{082-omit-type-helper.solution.2.ts => 083-omit-type-helper.solution.2.ts} (100%) rename src/020-objects/{083-no-autocomplete-on-omit.explainer.ts => 084-no-autocomplete-on-omit.explainer.ts} (100%) rename src/020-objects/{084-omit-cant-distribute.explainer.1.ts => 085-omit-cant-distribute.explainer.1.ts} (100%) rename src/020-objects/{084-omit-cant-distribute.explainer.2.ts => 085-omit-cant-distribute.explainer.2.ts} (100%) rename src/020-objects/{085-omit-or-pick-more-than-one-thing.problem.ts => 086-omit-or-pick-more-than-one-thing.problem.ts} (100%) rename src/020-objects/{085-omit-or-pick-more-than-one-thing.solution.1.ts => 086-omit-or-pick-more-than-one-thing.solution.1.ts} (100%) rename src/020-objects/{085-omit-or-pick-more-than-one-thing.solution.2.ts => 086-omit-or-pick-more-than-one-thing.solution.2.ts} (100%) rename src/020-objects/{086-partial-type-helper.problem.ts => 087-partial-type-helper.problem.ts} (100%) rename src/020-objects/{086-partial-type-helper.solution.ts => 087-partial-type-helper.solution.ts} (100%) rename src/020-objects/{087-required-type-helper.explainer.ts => 088-required-type-helper.explainer.ts} (100%) rename src/028-mutability/{089-object-property-inference.problem.ts => 089-let-and-const-inference.problem.ts} (100%) rename src/028-mutability/{089-object-property-inference.solution.ts => 089-let-and-const-inference.solution.ts} (100%) rename src/028-mutability/{091-readonly-object-properties.problem.ts => 090-object-property-inference.problem.ts} (100%) rename src/028-mutability/{091-readonly-object-properties.solution.ts => 090-object-property-inference.solution.ts} (100%) rename src/028-mutability/{090-narrowing-in-different-scopes.problem.ts => 091-narrowing-in-different-scopes.problem.ts} (100%) rename src/028-mutability/{090-narrowing-in-different-scopes.solution.1.ts => 091-narrowing-in-different-scopes.solution.1.ts} (100%) rename src/028-mutability/{090-narrowing-in-different-scopes.solution.2.ts => 091-narrowing-in-different-scopes.solution.2.ts} (100%) rename src/028-mutability/{092-intro-to-as-const.problem.ts => 092-readonly-object-properties.problem.ts} (100%) rename src/028-mutability/{092-intro-to-as-const.solution.ts => 092-readonly-object-properties.solution.ts} (100%) rename src/028-mutability/{093-as-const-vs-object-freeze.problem.ts => 093-intro-to-as-const.problem.ts} (100%) rename src/028-mutability/{093-as-const-vs-object-freeze.solution.ts => 093-intro-to-as-const.solution.ts} (100%) rename src/028-mutability/{094-readonly-arrays.problem.ts => 094-as-const-vs-object-freeze.problem.ts} (100%) rename src/028-mutability/{094-readonly-arrays.solution.ts => 094-as-const-vs-object-freeze.solution.ts} (100%) rename src/028-mutability/{095-includes-on-readonly-arrays.problem.ts => 095-readonly-arrays.problem.ts} (100%) rename src/028-mutability/{095-includes-on-readonly-arrays.solution.ts => 095-readonly-arrays.solution.ts} (100%) rename src/028-mutability/{096-readonly-arrays-vs-mutable-arrays.problem.ts => 096-includes-on-readonly-arrays.problem.ts} (100%) rename src/028-mutability/{096-readonly-arrays-vs-mutable-arrays.solution.ts => 096-includes-on-readonly-arrays.solution.ts} (100%) rename src/028-mutability/{097-as-const-to-make-functions-infer-a-tuple.problem.ts => 097-readonly-arrays-vs-mutable-arrays.problem.ts} (100%) rename src/028-mutability/{097-as-const-to-make-functions-infer-a-tuple.solution.ts => 097-readonly-arrays-vs-mutable-arrays.solution.ts} (100%) rename src/028-mutability/{098-as-const-can-make-strings-infer-as-their-literals-in-objects.problem.ts => 098-as-const-to-make-functions-infer-a-tuple.problem.ts} (100%) rename src/028-mutability/{098-as-const-can-make-strings-infer-as-their-literals-in-objects.solution.ts => 098-as-const-to-make-functions-infer-a-tuple.solution.ts} (100%) rename src/{030-classes/099-understand-classes.problem.ts => 028-mutability/099-as-const-can-make-strings-infer-as-their-literals-in-objects.problem.ts} (100%) rename src/{030-classes/099-understand-classes.solution.ts => 028-mutability/099-as-const-can-make-strings-infer-as-their-literals-in-objects.solution.ts} (100%) rename src/030-classes/{100-public-and-private-properties.problem.ts => 100-understand-classes.problem.ts} (100%) rename src/030-classes/{100-public-and-private-properties.solution.ts => 100-understand-classes.solution.ts} (100%) rename src/030-classes/{101-hash-in-javascript.problem.ts => 101-public-and-private-properties.problem.ts} (100%) rename src/030-classes/{101-hash-in-javascript.solution.ts => 101-public-and-private-properties.solution.ts} (100%) rename src/030-classes/{102-optional-class-properties.problem.ts => 102-hash-in-javascript.problem.ts} (100%) rename src/030-classes/{102-optional-class-properties.solution.ts => 102-hash-in-javascript.solution.ts} (100%) rename src/030-classes/{103-readonly-class-properties.problem.ts => 103-optional-class-properties.problem.ts} (100%) rename src/030-classes/{103-readonly-class-properties.solution.ts => 103-optional-class-properties.solution.ts} (100%) rename src/030-classes/{104-class-methods.problem.ts => 104-readonly-class-properties.problem.ts} (100%) rename src/030-classes/{104-class-methods.solution.ts => 104-readonly-class-properties.solution.ts} (100%) rename src/030-classes/{105-decorators.problem.ts => 105-class-methods.problem.ts} (100%) rename src/030-classes/{105-decorators.solution.ts => 105-class-methods.solution.ts} (100%) rename src/030-classes/{106-implementing-interfaces.problem.ts => 106-decorators.problem.ts} (100%) rename src/030-classes/{106-implementing-interfaces.solution.ts => 106-decorators.solution.ts} (100%) rename src/030-classes/{107-typing-this-in-functions.problem.ts => 107-implementing-interfaces.problem.ts} (100%) rename src/030-classes/{107-typing-this-in-functions.solution.ts => 107-implementing-interfaces.solution.ts} (100%) rename src/030-classes/{108-can-you-type-this-in-functions.problem.ts => 108-typing-this-in-functions.problem.ts} (100%) rename src/030-classes/{108-can-you-type-this-in-functions.solution.ts => 108-typing-this-in-functions.solution.ts} (100%) rename src/{032-typescript-only-features/109-auto-assignation-in-classes.problem.ts => 030-classes/109-can-you-type-this-in-functions.problem.ts} (100%) rename src/{032-typescript-only-features/109-auto-assignation-in-classes.solution.ts => 030-classes/109-can-you-type-this-in-functions.solution.ts} (100%) rename src/032-typescript-only-features/{110-enums.problem.ts => 110-auto-assignation-in-classes.problem.ts} (100%) rename src/032-typescript-only-features/{110-enums.solution.ts => 110-auto-assignation-in-classes.solution.ts} (100%) rename src/032-typescript-only-features/{111-const-enums.problem.ts => 111-enums.problem.ts} (100%) rename src/032-typescript-only-features/{111-const-enums.solution.ts => 111-enums.solution.ts} (100%) rename src/032-typescript-only-features/{112-namespaces.problem.ts => 112-const-enums.problem.ts} (100%) rename src/032-typescript-only-features/{112-namespaces.solution.ts => 112-const-enums.solution.ts} (100%) rename src/032-typescript-only-features/{113-namespaces-can-be-used-as-types-or-values.problem.ts => 113-namespaces.problem.ts} (100%) rename src/032-typescript-only-features/{113-namespaces-can-be-used-as-types-or-values.solution.ts => 113-namespaces.solution.ts} (100%) rename src/032-typescript-only-features/{114-namespaces-can-declaration-merge.problem.ts => 114-namespaces-can-be-used-as-types-or-values.problem.ts} (100%) rename src/032-typescript-only-features/{114-namespaces-can-declaration-merge.solution.ts => 114-namespaces-can-be-used-as-types-or-values.solution.ts} (100%) rename src/032-typescript-only-features/{115-interfaces-within-namespaces-can-declaration-merge.problem.ts => 115-namespaces-can-declaration-merge.problem.ts} (100%) rename src/032-typescript-only-features/{115-interfaces-within-namespaces-can-declaration-merge.solution.ts => 115-namespaces-can-declaration-merge.solution.ts} (100%) rename src/032-typescript-only-features/{116-should-you-use-namespaces.problem.ts => 116-interfaces-within-namespaces-can-declaration-merge.problem.ts} (100%) rename src/032-typescript-only-features/{116-should-you-use-namespaces.solution.ts => 116-interfaces-within-namespaces-can-declaration-merge.solution.ts} (100%) rename src/{035-understanding-the-compiler/117-any.problem.ts => 032-typescript-only-features/117-should-you-use-namespaces.problem.ts} (100%) rename src/{035-understanding-the-compiler/117-any.solution.ts => 032-typescript-only-features/117-should-you-use-namespaces.solution.ts} (100%) rename src/035-understanding-the-compiler/{118-global-typings-use-any.problem.ts => 118-any.problem.ts} (100%) rename src/035-understanding-the-compiler/{118-global-typings-use-any.solution.ts => 118-any.solution.ts} (100%) rename src/035-understanding-the-compiler/{119-as-and-as-any.problem.ts => 119-global-typings-use-any.problem.ts} (100%) rename src/035-understanding-the-compiler/{119-as-and-as-any.solution.ts => 119-global-typings-use-any.solution.ts} (100%) rename src/035-understanding-the-compiler/{120-limits-of-as.problem.ts => 120-as-and-as-any.problem.ts} (100%) rename src/035-understanding-the-compiler/{120-limits-of-as.solution.ts => 120-as-and-as-any.solution.ts} (100%) rename src/035-understanding-the-compiler/{121-ts-ignore.problem.ts => 121-limits-of-as.problem.ts} (100%) rename src/035-understanding-the-compiler/{121-ts-ignore.solution.ts => 121-limits-of-as.solution.ts} (100%) rename src/035-understanding-the-compiler/{122-ts-expect-error.problem.ts => 122-ts-ignore.problem.ts} (100%) rename src/035-understanding-the-compiler/{122-ts-expect-error.solution.ts => 122-ts-ignore.solution.ts} (100%) rename src/035-understanding-the-compiler/{123-satisfies.problem.ts => 123-ts-expect-error.problem.ts} (100%) rename src/035-understanding-the-compiler/{123-satisfies.solution.ts => 123-ts-expect-error.solution.ts} (100%) rename src/035-understanding-the-compiler/{124-satisfies-with-as-const.problem.ts => 124-satisfies.problem.ts} (100%) rename src/035-understanding-the-compiler/{124-satisfies-with-as-const.solution.ts => 124-satisfies.solution.ts} (100%) rename src/035-understanding-the-compiler/{125-annotating-errors-a-function-throws.problem.ts => 125-satisfies-with-as-const.problem.ts} (100%) rename src/035-understanding-the-compiler/{125-annotating-errors-a-function-throws.solution.ts => 125-satisfies-with-as-const.solution.ts} (100%) rename src/035-understanding-the-compiler/{126-excess-properties-warnings.problem.ts => 126-annotating-errors-a-function-throws.problem.ts} (100%) rename src/035-understanding-the-compiler/{126-excess-properties-warnings.solution.ts => 126-annotating-errors-a-function-throws.solution.ts} (100%) rename src/035-understanding-the-compiler/{127-object-keys-and-object-entries.problem.ts => 127-excess-properties-warnings.problem.ts} (100%) rename src/035-understanding-the-compiler/{127-object-keys-and-object-entries.solution.ts => 127-excess-properties-warnings.solution.ts} (100%) rename src/035-understanding-the-compiler/{128-structural-vs-nominal-typing.problem.ts => 128-object-keys-and-object-entries.problem.ts} (100%) rename src/035-understanding-the-compiler/{128-structural-vs-nominal-typing.solution.ts => 128-object-keys-and-object-entries.solution.ts} (100%) rename src/035-understanding-the-compiler/{129-how-enums-break-structural-typing.problem.ts => 129-structural-vs-nominal-typing.problem.ts} (100%) rename src/035-understanding-the-compiler/{129-how-enums-break-structural-typing.solution.ts => 129-structural-vs-nominal-typing.solution.ts} (100%) rename src/035-understanding-the-compiler/{130-unions-of-functions.problem.ts => 130-how-enums-break-structural-typing.problem.ts} (100%) rename src/035-understanding-the-compiler/{130-unions-of-functions.solution.ts => 130-how-enums-break-structural-typing.solution.ts} (100%) rename src/035-understanding-the-compiler/{131-empty-object-type.problem.ts => 131-unions-of-functions.problem.ts} (100%) rename src/035-understanding-the-compiler/{131-empty-object-type.solution.ts => 131-unions-of-functions.solution.ts} (100%) rename src/{040-deriving-types-from-values/132-typeof-keyword.problem.ts => 035-understanding-the-compiler/132-empty-object-type.problem.ts} (100%) rename src/{040-deriving-types-from-values/132-typeof-keyword.solution.ts => 035-understanding-the-compiler/132-empty-object-type.solution.ts} (100%) rename src/{040-deriving-types-from-values/133-create-runtime-values-from-types.problem.ts => 035-understanding-the-compiler/133-truly-empty-object.problem.ts} (100%) rename src/{040-deriving-types-from-values/133-create-runtime-values-from-types.solution.ts => 035-understanding-the-compiler/133-truly-empty-object.solution.ts} (100%) rename src/040-deriving-types-from-values/{134-classes-and-enums-cross-value-and-type-world.problem.ts => 134-typeof-keyword.problem.ts} (100%) rename src/040-deriving-types-from-values/{134-classes-and-enums-cross-value-and-type-world.solution.ts => 134-typeof-keyword.solution.ts} (100%) rename src/040-deriving-types-from-values/{135-this-crosses-value-and-type-world.problem.ts => 135-create-runtime-values-from-types.problem.ts} (100%) rename src/040-deriving-types-from-values/{135-this-crosses-value-and-type-world.solution.ts => 135-create-runtime-values-from-types.solution.ts} (100%) rename src/040-deriving-types-from-values/{136-return-type.problem.ts => 136-classes-and-enums-cross-value-and-type-world.problem.ts} (100%) rename src/040-deriving-types-from-values/{136-return-type.solution.ts => 136-classes-and-enums-cross-value-and-type-world.solution.ts} (100%) rename src/040-deriving-types-from-values/{137-parameters-type-helper.problem.ts => 137-this-crosses-value-and-type-world.problem.ts} (100%) rename src/040-deriving-types-from-values/{137-parameters-type-helper.solution.ts => 137-this-crosses-value-and-type-world.solution.ts} (100%) rename src/040-deriving-types-from-values/{138-keyof.problem.ts => 138-return-type.problem.ts} (100%) rename src/040-deriving-types-from-values/{138-keyof.solution.ts => 138-return-type.solution.ts} (100%) rename src/040-deriving-types-from-values/{139-indexed-access-types.problem.ts => 139-parameters-type-helper.problem.ts} (100%) rename src/040-deriving-types-from-values/{139-indexed-access-types.solution.ts => 139-parameters-type-helper.solution.ts} (100%) rename src/040-deriving-types-from-values/{140-pass-unions-to-indexed-access-types.problem.ts => 140-keyof.problem.ts} (100%) rename src/040-deriving-types-from-values/{140-pass-unions-to-indexed-access-types.solution.ts => 140-keyof.solution.ts} (100%) rename src/040-deriving-types-from-values/{141-pass-keyof-into-an-indexed-access-type.problem.ts => 141-indexed-access-types.problem.ts} (100%) rename src/040-deriving-types-from-values/{141-pass-keyof-into-an-indexed-access-type.solution.ts => 141-indexed-access-types.solution.ts} (100%) rename src/040-deriving-types-from-values/{142-create-an-enum-from-as-const-object.problem.ts => 142-pass-unions-to-indexed-access-types.problem.ts} (100%) rename src/040-deriving-types-from-values/{142-create-an-enum-from-as-const-object.solution.ts => 142-pass-unions-to-indexed-access-types.solution.ts} (100%) rename src/040-deriving-types-from-values/{143-create-a-union-from-an-as-const-array.problem.ts => 143-pass-keyof-into-an-indexed-access-type.problem.ts} (100%) rename src/040-deriving-types-from-values/{143-create-a-union-from-an-as-const-array.solution.ts => 143-pass-keyof-into-an-indexed-access-type.solution.ts} (100%) rename src/040-deriving-types-from-values/{144-should-i-use-enums-or-as-const.problem.ts => 144-create-an-enum-from-as-const-object.problem.ts} (100%) rename src/040-deriving-types-from-values/{144-should-i-use-enums-or-as-const.solution.ts => 144-create-an-enum-from-as-const-object.solution.ts} (100%) rename src/040-deriving-types-from-values/{145-using-numeric-comparators-on-enums.problem.ts => 145-create-a-union-from-an-as-const-array.problem.ts} (100%) rename src/040-deriving-types-from-values/{145-using-numeric-comparators-on-enums.solution.ts => 145-create-a-union-from-an-as-const-array.solution.ts} (100%) rename src/{060-modules-and-namespaces/146-module-or-script.problem.ts => 040-deriving-types-from-values/146-should-i-use-enums-or-as-const.problem.ts} (100%) rename src/{060-modules-and-namespaces/146-module-or-script.solution.ts => 040-deriving-types-from-values/146-should-i-use-enums-or-as-const.solution.ts} (100%) rename src/{060-modules-and-namespaces/147-module-detection-force.problem.ts => 040-deriving-types-from-values/147-using-numeric-comparators-on-enums.problem.ts} (100%) rename src/{060-modules-and-namespaces/147-module-detection-force.solution.ts => 040-deriving-types-from-values/147-using-numeric-comparators-on-enums.solution.ts} (100%) rename src/060-modules-and-namespaces/{148-isolated-modules.problem.ts => 148-module-or-script.problem.ts} (100%) rename src/060-modules-and-namespaces/{148-isolated-modules.solution.ts => 148-module-or-script.solution.ts} (100%) rename src/060-modules-and-namespaces/{149-cjs-vs-esm.problem.ts => 149-module-detection-force.problem.ts} (100%) rename src/060-modules-and-namespaces/{149-cjs-vs-esm.solution.ts => 149-module-detection-force.solution.ts} (100%) rename src/060-modules-and-namespaces/{150-module-resolution-bundler-or-nodenext.problem.ts => 150-isolated-modules.problem.ts} (100%) rename src/060-modules-and-namespaces/{150-module-resolution-bundler-or-nodenext.solution.ts => 150-isolated-modules.solution.ts} (100%) rename src/060-modules-and-namespaces/{151-declaration-files.problem.ts => 151-cjs-vs-esm.problem.ts} (100%) rename src/060-modules-and-namespaces/{151-declaration-files.solution.ts => 151-cjs-vs-esm.solution.ts} (100%) rename src/060-modules-and-namespaces/{152-skip-lib-check-true.problem.ts => 152-module-resolution-bundler-or-nodenext.problem.ts} (100%) rename src/060-modules-and-namespaces/{152-skip-lib-check-true.solution.ts => 152-module-resolution-bundler-or-nodenext.solution.ts} (100%) rename src/060-modules-and-namespaces/{153-declaration-files-can-be-modules-or-scripts.problem.ts => 153-declaration-files.problem.ts} (100%) rename src/060-modules-and-namespaces/{153-declaration-files-can-be-modules-or-scripts.solution.ts => 153-declaration-files.solution.ts} (100%) rename src/060-modules-and-namespaces/{154-declaration-files-can-be-used-to-type-js-files.problem.ts => 154-skip-lib-check-true.problem.ts} (100%) rename src/060-modules-and-namespaces/{154-declaration-files-can-be-used-to-type-js-files.solution.ts => 154-skip-lib-check-true.solution.ts} (100%) rename src/060-modules-and-namespaces/{155-should-you-use-declaration-files.problem.ts => 155-declaration-files-can-be-modules-or-scripts.problem.ts} (100%) rename src/060-modules-and-namespaces/{155-should-you-use-declaration-files.solution.ts => 155-declaration-files-can-be-modules-or-scripts.solution.ts} (100%) rename src/060-modules-and-namespaces/{156-resolve-json-module.problem.ts => 156-declaration-files-can-be-used-to-type-js-files.problem.ts} (100%) rename src/060-modules-and-namespaces/{156-resolve-json-module.solution.ts => 156-declaration-files-can-be-used-to-type-js-files.solution.ts} (100%) rename src/060-modules-and-namespaces/{157-json-d-ts-files.problem.ts => 157-should-you-use-declaration-files.problem.ts} (100%) rename src/060-modules-and-namespaces/{157-json-d-ts-files.solution.ts => 157-should-you-use-declaration-files.solution.ts} (100%) rename src/{062-the-global-namespace/158-ambient-context-and-declare-const.problem.ts => 060-modules-and-namespaces/158-resolve-json-module.problem.ts} (100%) rename src/{062-the-global-namespace/158-ambient-context-and-declare-const.solution.ts => 060-modules-and-namespaces/158-resolve-json-module.solution.ts} (100%) rename src/{062-the-global-namespace/159-declare-global.problem.ts => 060-modules-and-namespaces/159-json-d-ts-files.problem.ts} (100%) rename src/{062-the-global-namespace/159-declare-global.solution.ts => 060-modules-and-namespaces/159-json-d-ts-files.solution.ts} (100%) rename src/062-the-global-namespace/{160-globals-are-tied-to-a-single-tsconfig.problem.ts => 160-ambient-context-and-declare-const.problem.ts} (100%) rename src/062-the-global-namespace/{160-globals-are-tied-to-a-single-tsconfig.solution.ts => 160-ambient-context-and-declare-const.solution.ts} (100%) rename src/062-the-global-namespace/{161-declare-global-or-declaration-file.problem.ts => 161-declare-global.problem.ts} (100%) rename src/062-the-global-namespace/{161-declare-global-or-declaration-file.solution.ts => 161-declare-global.solution.ts} (100%) rename src/062-the-global-namespace/{162-declare-module.problem.ts => 162-globals-are-tied-to-a-single-tsconfig.problem.ts} (100%) rename src/062-the-global-namespace/{162-declare-module.solution.ts => 162-globals-are-tied-to-a-single-tsconfig.solution.ts} (100%) rename src/062-the-global-namespace/{163-wildcard-in-declare-module.problem.ts => 163-declare-global-or-declaration-file.problem.ts} (100%) rename src/062-the-global-namespace/{163-wildcard-in-declare-module.solution.ts => 163-declare-global-or-declaration-file.solution.ts} (100%) rename src/062-the-global-namespace/{164-modifying-window.problem.ts => 164-declare-module.problem.ts} (100%) rename src/062-the-global-namespace/{164-modifying-window.solution.ts => 164-declare-module.solution.ts} (100%) rename src/062-the-global-namespace/{165-modifying-globalthis.problem.ts => 165-wildcard-in-declare-module.problem.ts} (100%) rename src/062-the-global-namespace/{165-modifying-globalthis.solution.ts => 165-wildcard-in-declare-module.solution.ts} (100%) rename src/062-the-global-namespace/{166-modifying-process-env.problem.ts => 166-modifying-window.problem.ts} (100%) rename src/062-the-global-namespace/{166-modifying-process-env.solution.ts => 166-modifying-window.solution.ts} (100%) rename src/{065-four-spaces-of-typescript-declarations/167-declare-module-for-overriding-third-party-libraries.problem.ts => 062-the-global-namespace/167-modifying-globalthis.problem.ts} (100%) rename src/{065-four-spaces-of-typescript-declarations/167-declare-module-for-overriding-third-party-libraries.solution.ts => 062-the-global-namespace/167-modifying-globalthis.solution.ts} (100%) rename src/{065-four-spaces-of-typescript-declarations/168-lib-d-ts.problem.ts => 062-the-global-namespace/168-modifying-process-env.problem.ts} (100%) rename src/{065-four-spaces-of-typescript-declarations/168-lib-d-ts.solution.ts => 062-the-global-namespace/168-modifying-process-env.solution.ts} (100%) rename src/065-four-spaces-of-typescript-declarations/{169-using-target-to-change-lib-d-ts.problem.ts => 169-declare-module-for-overriding-third-party-libraries.problem.ts} (100%) rename src/065-four-spaces-of-typescript-declarations/{169-using-target-to-change-lib-d-ts.solution.ts => 169-declare-module-for-overriding-third-party-libraries.solution.ts} (100%) rename src/065-four-spaces-of-typescript-declarations/{170-lib-dom-d-ts.problem.ts => 170-lib-d-ts.problem.ts} (100%) rename src/065-four-spaces-of-typescript-declarations/{170-lib-dom-d-ts.solution.ts => 170-lib-d-ts.solution.ts} (100%) rename src/065-four-spaces-of-typescript-declarations/{171-third-party-types.problem.ts => 171-using-target-to-change-lib-d-ts.problem.ts} (100%) rename src/065-four-spaces-of-typescript-declarations/{171-third-party-types.solution.ts => 171-using-target-to-change-lib-d-ts.solution.ts} (100%) rename src/065-four-spaces-of-typescript-declarations/{172-type-roots-in-tsconfig.problem.ts => 172-lib-dom-d-ts.problem.ts} (100%) rename src/065-four-spaces-of-typescript-declarations/{172-type-roots-in-tsconfig.solution.ts => 172-lib-dom-d-ts.solution.ts} (100%) rename src/065-four-spaces-of-typescript-declarations/{173-types-that-ship-with-libraries.problem.ts => 173-third-party-types.problem.ts} (100%) rename src/065-four-spaces-of-typescript-declarations/{173-types-that-ship-with-libraries.solution.ts => 173-third-party-types.solution.ts} (100%) rename src/{075-designing-your-types/174-domain-modelling-in-typescript.problem.ts => 065-four-spaces-of-typescript-declarations/174-type-roots-in-tsconfig.problem.ts} (100%) rename src/{075-designing-your-types/174-domain-modelling-in-typescript.solution.ts => 065-four-spaces-of-typescript-declarations/174-type-roots-in-tsconfig.solution.ts} (100%) rename src/{075-designing-your-types/175-intro-to-helper-types.problem.ts => 065-four-spaces-of-typescript-declarations/175-types-that-ship-with-libraries.problem.ts} (100%) rename src/{075-designing-your-types/175-intro-to-helper-types.solution.ts => 065-four-spaces-of-typescript-declarations/175-types-that-ship-with-libraries.solution.ts} (100%) rename src/075-designing-your-types/{176-multiple-type-parameters.problem.ts => 176-domain-modelling-in-typescript.problem.ts} (100%) rename src/075-designing-your-types/{176-multiple-type-parameters.solution.ts => 176-domain-modelling-in-typescript.solution.ts} (100%) rename src/075-designing-your-types/{177-default-type-parameters.problem.ts => 177-intro-to-helper-types.problem.ts} (100%) rename src/075-designing-your-types/{177-default-type-parameters.solution.ts => 177-intro-to-helper-types.solution.ts} (100%) rename src/075-designing-your-types/{178-type-helper-constraints.problem.ts => 178-multiple-type-parameters.problem.ts} (100%) rename src/075-designing-your-types/{178-type-helper-constraints.solution.ts => 178-multiple-type-parameters.solution.ts} (100%) rename src/075-designing-your-types/{179-tighter-version-of-omit.problem.ts => 179-default-type-parameters.problem.ts} (100%) rename src/075-designing-your-types/{179-tighter-version-of-omit.solution.ts => 179-default-type-parameters.solution.ts} (100%) rename src/075-designing-your-types/{180-template-literal-types.problem.ts => 180-type-helper-constraints.problem.ts} (100%) rename src/075-designing-your-types/{180-template-literal-types.solution.ts => 180-type-helper-constraints.solution.ts} (100%) rename src/075-designing-your-types/{181-passing-unions-to-template-literal-types.problem.ts => 181-tighter-version-of-omit.problem.ts} (100%) rename src/075-designing-your-types/{181-passing-unions-to-template-literal-types.solution.ts => 181-tighter-version-of-omit.solution.ts} (100%) rename src/075-designing-your-types/{182-mapped-types.problem.ts => 182-template-literal-types.problem.ts} (100%) rename src/075-designing-your-types/{182-mapped-types.solution.ts => 182-template-literal-types.solution.ts} (100%) rename src/075-designing-your-types/{183-as-in-mapped-types.problem.ts => 183-passing-unions-to-template-literal-types.problem.ts} (100%) rename src/075-designing-your-types/{183-as-in-mapped-types.solution.ts => 183-passing-unions-to-template-literal-types.solution.ts} (100%) rename src/{080-configuring-typescript/184-introduction-to-tsconfig.problem.ts => 075-designing-your-types/184-mapped-types.problem.ts} (100%) rename src/{080-configuring-typescript/184-introduction-to-tsconfig.solution.ts => 075-designing-your-types/184-mapped-types.solution.ts} (100%) rename src/{080-configuring-typescript/185-tsconfig-bases.problem.ts => 075-designing-your-types/185-as-in-mapped-types.problem.ts} (100%) rename src/{080-configuring-typescript/185-tsconfig-bases.solution.ts => 075-designing-your-types/185-as-in-mapped-types.solution.ts} (100%) rename src/080-configuring-typescript/{186-multiple-tsconfig-json-files.problem.ts => 186-introduction-to-tsconfig.problem.ts} (100%) rename src/080-configuring-typescript/{186-multiple-tsconfig-json-files.solution.ts => 186-introduction-to-tsconfig.solution.ts} (100%) rename src/080-configuring-typescript/{187-extending-from-other-tsconfig-json-files.problem.ts => 187-tsconfig-bases.problem.ts} (100%) rename src/080-configuring-typescript/{187-extending-from-other-tsconfig-json-files.solution.ts => 187-tsconfig-bases.solution.ts} (100%) rename src/080-configuring-typescript/{188-project-references.problem.ts => 188-multiple-tsconfig-json-files.problem.ts} (100%) rename src/080-configuring-typescript/{188-project-references.solution.ts => 188-multiple-tsconfig-json-files.solution.ts} (100%) rename src/080-configuring-typescript/{189-jsx.problem.ts => 189-extending-from-other-tsconfig-json-files.problem.ts} (100%) rename src/080-configuring-typescript/{189-jsx.solution.ts => 189-extending-from-other-tsconfig-json-files.solution.ts} (100%) rename src/080-configuring-typescript/{190-rules-that-make-up-strict-mode.problem.ts => 190-project-references.problem.ts} (100%) rename src/080-configuring-typescript/{190-rules-that-make-up-strict-mode.solution.ts => 190-project-references.solution.ts} (100%) rename src/080-configuring-typescript/{191-no-unchecked-indexed-access.problem.ts => 191-jsx.problem.ts} (100%) rename src/080-configuring-typescript/{191-no-unchecked-indexed-access.solution.ts => 191-jsx.solution.ts} (100%) rename src/080-configuring-typescript/{192-creating-declaration-files-and-declaration-maps.problem.ts => 192-rules-that-make-up-strict-mode.problem.ts} (100%) rename src/080-configuring-typescript/{192-creating-declaration-files-and-declaration-maps.solution.ts => 192-rules-that-make-up-strict-mode.solution.ts} (100%) rename src/080-configuring-typescript/{193-setting-up-types-for-node.problem.ts => 193-no-unchecked-indexed-access.problem.ts} (100%) rename src/080-configuring-typescript/{193-setting-up-types-for-node.solution.ts => 193-no-unchecked-indexed-access.solution.ts} (100%) rename src/080-configuring-typescript/{194-set-up-types-for-simple-scripts.problem.ts => 194-creating-declaration-files-and-declaration-maps.problem.ts} (100%) rename src/080-configuring-typescript/{194-set-up-types-for-simple-scripts.solution.ts => 194-creating-declaration-files-and-declaration-maps.solution.ts} (100%) rename src/080-configuring-typescript/{195-set-up-types-for-test-files.problem.ts => 195-setting-up-types-for-node.problem.ts} (100%) rename src/080-configuring-typescript/{195-set-up-types-for-test-files.solution.ts => 195-setting-up-types-for-node.solution.ts} (100%) rename src/080-configuring-typescript/{196-set-up-types-for-bundled-web-app.problem.ts => 196-set-up-types-for-simple-scripts.problem.ts} (100%) rename src/080-configuring-typescript/{196-set-up-types-for-bundled-web-app.solution.ts => 196-set-up-types-for-simple-scripts.solution.ts} (100%) rename src/{085-the-utils-folder/197-intro-to-the-utils-folder.problem.ts => 080-configuring-typescript/197-set-up-types-for-test-files.problem.ts} (100%) rename src/{085-the-utils-folder/197-intro-to-the-utils-folder.solution.ts => 080-configuring-typescript/197-set-up-types-for-test-files.solution.ts} (100%) rename src/{085-the-utils-folder/198-generic-functions-without-inference.problem.ts => 080-configuring-typescript/198-set-up-types-for-bundled-web-app.problem.ts} (100%) rename src/{085-the-utils-folder/198-generic-functions-without-inference.solution.ts => 080-configuring-typescript/198-set-up-types-for-bundled-web-app.solution.ts} (100%) rename src/085-the-utils-folder/{199-type-parameter-defaults-in-generic-functions.problem.ts => 199-intro-to-the-utils-folder.problem.ts} (100%) rename src/085-the-utils-folder/{199-type-parameter-defaults-in-generic-functions.solution.ts => 199-intro-to-the-utils-folder.solution.ts} (100%) rename src/085-the-utils-folder/{200-type-parameter-constraints-with-generic-functions.problem.ts => 200-generic-functions-without-inference.problem.ts} (100%) rename src/085-the-utils-folder/{200-type-parameter-constraints-with-generic-functions.solution.ts => 200-generic-functions-without-inference.solution.ts} (100%) rename src/085-the-utils-folder/{201-generic-functions-with-inference.problem.ts => 201-type-parameter-defaults-in-generic-functions.problem.ts} (100%) rename src/085-the-utils-folder/{201-generic-functions-with-inference.solution.ts => 201-type-parameter-defaults-in-generic-functions.solution.ts} (100%) rename src/085-the-utils-folder/{202-multiple-type-arguments.problem.ts => 202-type-parameter-constraints-with-generic-functions.problem.ts} (100%) rename src/085-the-utils-folder/{202-multiple-type-arguments.solution.ts => 202-type-parameter-constraints-with-generic-functions.solution.ts} (100%) rename src/085-the-utils-folder/{203-create-group-by-function.problem.ts => 203-generic-functions-with-inference.problem.ts} (100%) rename src/085-the-utils-folder/{203-create-group-by-function.solution.ts => 203-generic-functions-with-inference.solution.ts} (100%) rename src/085-the-utils-folder/{204-type-predicates.problem.ts => 204-multiple-type-arguments.problem.ts} (100%) rename src/085-the-utils-folder/{204-type-predicates.solution.ts => 204-multiple-type-arguments.solution.ts} (100%) rename src/085-the-utils-folder/{205-assertion-functions.problem.ts => 205-create-group-by-function.problem.ts} (100%) rename src/085-the-utils-folder/{205-assertion-functions.solution.ts => 205-create-group-by-function.solution.ts} (100%) rename src/{090-the-style-guide/206-setting-up-eslint.problem.ts => 085-the-utils-folder/206-type-predicates.problem.ts} (100%) rename src/{090-the-style-guide/206-setting-up-eslint.solution.ts => 085-the-utils-folder/206-type-predicates.solution.ts} (100%) rename src/{090-the-style-guide/207-hungarian-notation.problem.ts => 085-the-utils-folder/207-assertion-functions.problem.ts} (100%) rename src/{090-the-style-guide/207-hungarian-notation.solution.ts => 085-the-utils-folder/207-assertion-functions.solution.ts} (100%) rename src/{090-the-style-guide/208-where-to-put-your-types.problem.ts => 085-the-utils-folder/208-function-overloads.problem.ts} (100%) rename src/{090-the-style-guide/208-where-to-put-your-types.solution.ts => 085-the-utils-folder/208-function-overloads.solution.ts} (100%) rename src/090-the-style-guide/{209-colocation-of-types.problem.ts => 209-setting-up-eslint.problem.ts} (100%) rename src/090-the-style-guide/{209-colocation-of-types.solution.ts => 209-setting-up-eslint.solution.ts} (100%) rename src/090-the-style-guide/{210-explicit-any-rule-or-not.problem.ts => 210-hungarian-notation.problem.ts} (100%) rename src/090-the-style-guide/{210-explicit-any-rule-or-not.solution.ts => 210-hungarian-notation.solution.ts} (100%) rename src/090-the-style-guide/{211-explicit-return-types-or-not.problem.ts => 211-where-to-put-your-types.problem.ts} (100%) rename src/090-the-style-guide/{211-explicit-return-types-or-not.solution.ts => 211-where-to-put-your-types.solution.ts} (100%) rename src/090-the-style-guide/{212-any-vs-ts-ignore-vs-ts-expect-error.problem.ts => 212-colocation-of-types.problem.ts} (100%) rename src/090-the-style-guide/{212-any-vs-ts-ignore-vs-ts-expect-error.solution.ts => 212-colocation-of-types.solution.ts} (100%) rename src/090-the-style-guide/{213-result-type.problem.ts => 213-explicit-any-rule-or-not.problem.ts} (100%) rename src/090-the-style-guide/{213-result-type.solution.ts => 213-explicit-any-rule-or-not.solution.ts} (100%) rename src/{095-migrating-from-javascript/214-strict-file-by-file-vs-ramp-up-strictness.problem.ts => 090-the-style-guide/214-explicit-return-types-or-not.problem.ts} (100%) rename src/{095-migrating-from-javascript/214-strict-file-by-file-vs-ramp-up-strictness.solution.ts => 090-the-style-guide/214-explicit-return-types-or-not.solution.ts} (100%) rename src/{095-migrating-from-javascript/215-dependencies-first.problem.ts => 090-the-style-guide/215-any-vs-ts-ignore-vs-ts-expect-error.problem.ts} (100%) rename src/{095-migrating-from-javascript/215-dependencies-first.solution.ts => 090-the-style-guide/215-any-vs-ts-ignore-vs-ts-expect-error.solution.ts} (100%) rename src/{095-migrating-from-javascript/216-madge.problem.ts => 090-the-style-guide/216-result-type.problem.ts} (100%) rename src/{095-migrating-from-javascript/216-madge.solution.ts => 090-the-style-guide/216-result-type.solution.ts} (100%) create mode 100644 src/090-the-style-guide/217-dont-declare-type-and-value-with-the-same-name.problem.ts create mode 100644 src/090-the-style-guide/217-dont-declare-type-and-value-with-the-same-name.solution.ts create mode 100644 src/090-the-style-guide/218-types-vs-interfaces.problem.ts create mode 100644 src/090-the-style-guide/218-types-vs-interfaces.solution.ts create mode 100644 src/095-migrating-from-javascript/219-strict-file-by-file-vs-ramp-up-strictness.problem.ts create mode 100644 src/095-migrating-from-javascript/219-strict-file-by-file-vs-ramp-up-strictness.solution.ts create mode 100644 src/095-migrating-from-javascript/220-dependencies-first.problem.ts create mode 100644 src/095-migrating-from-javascript/220-dependencies-first.solution.ts create mode 100644 src/095-migrating-from-javascript/221-madge.problem.ts create mode 100644 src/095-migrating-from-javascript/221-madge.solution.ts diff --git a/plan.md b/plan.md new file mode 100644 index 0000000..4058d8a --- /dev/null +++ b/plan.md @@ -0,0 +1 @@ +JSDoc section? diff --git a/src/020-objects/078-record-type-with-union-as-keys.problem.ts b/src/020-objects/078-property-key-type.problem.ts similarity index 100% rename from src/020-objects/078-record-type-with-union-as-keys.problem.ts rename to src/020-objects/078-property-key-type.problem.ts diff --git a/src/020-objects/078-record-type-with-union-as-keys.solution.ts b/src/020-objects/078-property-key-type.solution.ts similarity index 100% rename from src/020-objects/078-record-type-with-union-as-keys.solution.ts rename to src/020-objects/078-property-key-type.solution.ts diff --git a/src/028-mutability/088-let-and-const-inference.problem.ts b/src/020-objects/079-record-type-with-union-as-keys.problem.ts similarity index 100% rename from src/028-mutability/088-let-and-const-inference.problem.ts rename to src/020-objects/079-record-type-with-union-as-keys.problem.ts diff --git a/src/028-mutability/088-let-and-const-inference.solution.ts b/src/020-objects/079-record-type-with-union-as-keys.solution.ts similarity index 100% rename from src/028-mutability/088-let-and-const-inference.solution.ts rename to src/020-objects/079-record-type-with-union-as-keys.solution.ts diff --git a/src/020-objects/079-declaration-merging-of-interfaces.problem.ts b/src/020-objects/080-declaration-merging-of-interfaces.problem.ts similarity index 100% rename from src/020-objects/079-declaration-merging-of-interfaces.problem.ts rename to src/020-objects/080-declaration-merging-of-interfaces.problem.ts diff --git a/src/020-objects/079-declaration-merging-of-interfaces.solution.ts b/src/020-objects/080-declaration-merging-of-interfaces.solution.ts similarity index 100% rename from src/020-objects/079-declaration-merging-of-interfaces.solution.ts rename to src/020-objects/080-declaration-merging-of-interfaces.solution.ts diff --git a/src/020-objects/080-pick-type-helper.problem.ts b/src/020-objects/081-pick-type-helper.problem.ts similarity index 100% rename from src/020-objects/080-pick-type-helper.problem.ts rename to src/020-objects/081-pick-type-helper.problem.ts diff --git a/src/020-objects/080-pick-type-helper.solution.1.ts b/src/020-objects/081-pick-type-helper.solution.1.ts similarity index 100% rename from src/020-objects/080-pick-type-helper.solution.1.ts rename to src/020-objects/081-pick-type-helper.solution.1.ts diff --git a/src/020-objects/080-pick-type-helper.solution.2.ts b/src/020-objects/081-pick-type-helper.solution.2.ts similarity index 100% rename from src/020-objects/080-pick-type-helper.solution.2.ts rename to src/020-objects/081-pick-type-helper.solution.2.ts diff --git a/src/020-objects/081-common-keys-of-unions-of-objects.problem.ts b/src/020-objects/082-common-keys-of-unions-of-objects.problem.ts similarity index 100% rename from src/020-objects/081-common-keys-of-unions-of-objects.problem.ts rename to src/020-objects/082-common-keys-of-unions-of-objects.problem.ts diff --git a/src/020-objects/081-common-keys-of-unions-of-objects.solution.ts b/src/020-objects/082-common-keys-of-unions-of-objects.solution.ts similarity index 100% rename from src/020-objects/081-common-keys-of-unions-of-objects.solution.ts rename to src/020-objects/082-common-keys-of-unions-of-objects.solution.ts diff --git a/src/020-objects/082-omit-type-helper.problem.ts b/src/020-objects/083-omit-type-helper.problem.ts similarity index 100% rename from src/020-objects/082-omit-type-helper.problem.ts rename to src/020-objects/083-omit-type-helper.problem.ts diff --git a/src/020-objects/082-omit-type-helper.solution.1.ts b/src/020-objects/083-omit-type-helper.solution.1.ts similarity index 100% rename from src/020-objects/082-omit-type-helper.solution.1.ts rename to src/020-objects/083-omit-type-helper.solution.1.ts diff --git a/src/020-objects/082-omit-type-helper.solution.2.ts b/src/020-objects/083-omit-type-helper.solution.2.ts similarity index 100% rename from src/020-objects/082-omit-type-helper.solution.2.ts rename to src/020-objects/083-omit-type-helper.solution.2.ts diff --git a/src/020-objects/083-no-autocomplete-on-omit.explainer.ts b/src/020-objects/084-no-autocomplete-on-omit.explainer.ts similarity index 100% rename from src/020-objects/083-no-autocomplete-on-omit.explainer.ts rename to src/020-objects/084-no-autocomplete-on-omit.explainer.ts diff --git a/src/020-objects/084-omit-cant-distribute.explainer.1.ts b/src/020-objects/085-omit-cant-distribute.explainer.1.ts similarity index 100% rename from src/020-objects/084-omit-cant-distribute.explainer.1.ts rename to src/020-objects/085-omit-cant-distribute.explainer.1.ts diff --git a/src/020-objects/084-omit-cant-distribute.explainer.2.ts b/src/020-objects/085-omit-cant-distribute.explainer.2.ts similarity index 100% rename from src/020-objects/084-omit-cant-distribute.explainer.2.ts rename to src/020-objects/085-omit-cant-distribute.explainer.2.ts diff --git a/src/020-objects/085-omit-or-pick-more-than-one-thing.problem.ts b/src/020-objects/086-omit-or-pick-more-than-one-thing.problem.ts similarity index 100% rename from src/020-objects/085-omit-or-pick-more-than-one-thing.problem.ts rename to src/020-objects/086-omit-or-pick-more-than-one-thing.problem.ts diff --git a/src/020-objects/085-omit-or-pick-more-than-one-thing.solution.1.ts b/src/020-objects/086-omit-or-pick-more-than-one-thing.solution.1.ts similarity index 100% rename from src/020-objects/085-omit-or-pick-more-than-one-thing.solution.1.ts rename to src/020-objects/086-omit-or-pick-more-than-one-thing.solution.1.ts diff --git a/src/020-objects/085-omit-or-pick-more-than-one-thing.solution.2.ts b/src/020-objects/086-omit-or-pick-more-than-one-thing.solution.2.ts similarity index 100% rename from src/020-objects/085-omit-or-pick-more-than-one-thing.solution.2.ts rename to src/020-objects/086-omit-or-pick-more-than-one-thing.solution.2.ts diff --git a/src/020-objects/086-partial-type-helper.problem.ts b/src/020-objects/087-partial-type-helper.problem.ts similarity index 100% rename from src/020-objects/086-partial-type-helper.problem.ts rename to src/020-objects/087-partial-type-helper.problem.ts diff --git a/src/020-objects/086-partial-type-helper.solution.ts b/src/020-objects/087-partial-type-helper.solution.ts similarity index 100% rename from src/020-objects/086-partial-type-helper.solution.ts rename to src/020-objects/087-partial-type-helper.solution.ts diff --git a/src/020-objects/087-required-type-helper.explainer.ts b/src/020-objects/088-required-type-helper.explainer.ts similarity index 100% rename from src/020-objects/087-required-type-helper.explainer.ts rename to src/020-objects/088-required-type-helper.explainer.ts diff --git a/src/028-mutability/089-object-property-inference.problem.ts b/src/028-mutability/089-let-and-const-inference.problem.ts similarity index 100% rename from src/028-mutability/089-object-property-inference.problem.ts rename to src/028-mutability/089-let-and-const-inference.problem.ts diff --git a/src/028-mutability/089-object-property-inference.solution.ts b/src/028-mutability/089-let-and-const-inference.solution.ts similarity index 100% rename from src/028-mutability/089-object-property-inference.solution.ts rename to src/028-mutability/089-let-and-const-inference.solution.ts diff --git a/src/028-mutability/091-readonly-object-properties.problem.ts b/src/028-mutability/090-object-property-inference.problem.ts similarity index 100% rename from src/028-mutability/091-readonly-object-properties.problem.ts rename to src/028-mutability/090-object-property-inference.problem.ts diff --git a/src/028-mutability/091-readonly-object-properties.solution.ts b/src/028-mutability/090-object-property-inference.solution.ts similarity index 100% rename from src/028-mutability/091-readonly-object-properties.solution.ts rename to src/028-mutability/090-object-property-inference.solution.ts diff --git a/src/028-mutability/090-narrowing-in-different-scopes.problem.ts b/src/028-mutability/091-narrowing-in-different-scopes.problem.ts similarity index 100% rename from src/028-mutability/090-narrowing-in-different-scopes.problem.ts rename to src/028-mutability/091-narrowing-in-different-scopes.problem.ts diff --git a/src/028-mutability/090-narrowing-in-different-scopes.solution.1.ts b/src/028-mutability/091-narrowing-in-different-scopes.solution.1.ts similarity index 100% rename from src/028-mutability/090-narrowing-in-different-scopes.solution.1.ts rename to src/028-mutability/091-narrowing-in-different-scopes.solution.1.ts diff --git a/src/028-mutability/090-narrowing-in-different-scopes.solution.2.ts b/src/028-mutability/091-narrowing-in-different-scopes.solution.2.ts similarity index 100% rename from src/028-mutability/090-narrowing-in-different-scopes.solution.2.ts rename to src/028-mutability/091-narrowing-in-different-scopes.solution.2.ts diff --git a/src/028-mutability/092-intro-to-as-const.problem.ts b/src/028-mutability/092-readonly-object-properties.problem.ts similarity index 100% rename from src/028-mutability/092-intro-to-as-const.problem.ts rename to src/028-mutability/092-readonly-object-properties.problem.ts diff --git a/src/028-mutability/092-intro-to-as-const.solution.ts b/src/028-mutability/092-readonly-object-properties.solution.ts similarity index 100% rename from src/028-mutability/092-intro-to-as-const.solution.ts rename to src/028-mutability/092-readonly-object-properties.solution.ts diff --git a/src/028-mutability/093-as-const-vs-object-freeze.problem.ts b/src/028-mutability/093-intro-to-as-const.problem.ts similarity index 100% rename from src/028-mutability/093-as-const-vs-object-freeze.problem.ts rename to src/028-mutability/093-intro-to-as-const.problem.ts diff --git a/src/028-mutability/093-as-const-vs-object-freeze.solution.ts b/src/028-mutability/093-intro-to-as-const.solution.ts similarity index 100% rename from src/028-mutability/093-as-const-vs-object-freeze.solution.ts rename to src/028-mutability/093-intro-to-as-const.solution.ts diff --git a/src/028-mutability/094-readonly-arrays.problem.ts b/src/028-mutability/094-as-const-vs-object-freeze.problem.ts similarity index 100% rename from src/028-mutability/094-readonly-arrays.problem.ts rename to src/028-mutability/094-as-const-vs-object-freeze.problem.ts diff --git a/src/028-mutability/094-readonly-arrays.solution.ts b/src/028-mutability/094-as-const-vs-object-freeze.solution.ts similarity index 100% rename from src/028-mutability/094-readonly-arrays.solution.ts rename to src/028-mutability/094-as-const-vs-object-freeze.solution.ts diff --git a/src/028-mutability/095-includes-on-readonly-arrays.problem.ts b/src/028-mutability/095-readonly-arrays.problem.ts similarity index 100% rename from src/028-mutability/095-includes-on-readonly-arrays.problem.ts rename to src/028-mutability/095-readonly-arrays.problem.ts diff --git a/src/028-mutability/095-includes-on-readonly-arrays.solution.ts b/src/028-mutability/095-readonly-arrays.solution.ts similarity index 100% rename from src/028-mutability/095-includes-on-readonly-arrays.solution.ts rename to src/028-mutability/095-readonly-arrays.solution.ts diff --git a/src/028-mutability/096-readonly-arrays-vs-mutable-arrays.problem.ts b/src/028-mutability/096-includes-on-readonly-arrays.problem.ts similarity index 100% rename from src/028-mutability/096-readonly-arrays-vs-mutable-arrays.problem.ts rename to src/028-mutability/096-includes-on-readonly-arrays.problem.ts diff --git a/src/028-mutability/096-readonly-arrays-vs-mutable-arrays.solution.ts b/src/028-mutability/096-includes-on-readonly-arrays.solution.ts similarity index 100% rename from src/028-mutability/096-readonly-arrays-vs-mutable-arrays.solution.ts rename to src/028-mutability/096-includes-on-readonly-arrays.solution.ts diff --git a/src/028-mutability/097-as-const-to-make-functions-infer-a-tuple.problem.ts b/src/028-mutability/097-readonly-arrays-vs-mutable-arrays.problem.ts similarity index 100% rename from src/028-mutability/097-as-const-to-make-functions-infer-a-tuple.problem.ts rename to src/028-mutability/097-readonly-arrays-vs-mutable-arrays.problem.ts diff --git a/src/028-mutability/097-as-const-to-make-functions-infer-a-tuple.solution.ts b/src/028-mutability/097-readonly-arrays-vs-mutable-arrays.solution.ts similarity index 100% rename from src/028-mutability/097-as-const-to-make-functions-infer-a-tuple.solution.ts rename to src/028-mutability/097-readonly-arrays-vs-mutable-arrays.solution.ts diff --git a/src/028-mutability/098-as-const-can-make-strings-infer-as-their-literals-in-objects.problem.ts b/src/028-mutability/098-as-const-to-make-functions-infer-a-tuple.problem.ts similarity index 100% rename from src/028-mutability/098-as-const-can-make-strings-infer-as-their-literals-in-objects.problem.ts rename to src/028-mutability/098-as-const-to-make-functions-infer-a-tuple.problem.ts diff --git a/src/028-mutability/098-as-const-can-make-strings-infer-as-their-literals-in-objects.solution.ts b/src/028-mutability/098-as-const-to-make-functions-infer-a-tuple.solution.ts similarity index 100% rename from src/028-mutability/098-as-const-can-make-strings-infer-as-their-literals-in-objects.solution.ts rename to src/028-mutability/098-as-const-to-make-functions-infer-a-tuple.solution.ts diff --git a/src/030-classes/099-understand-classes.problem.ts b/src/028-mutability/099-as-const-can-make-strings-infer-as-their-literals-in-objects.problem.ts similarity index 100% rename from src/030-classes/099-understand-classes.problem.ts rename to src/028-mutability/099-as-const-can-make-strings-infer-as-their-literals-in-objects.problem.ts diff --git a/src/030-classes/099-understand-classes.solution.ts b/src/028-mutability/099-as-const-can-make-strings-infer-as-their-literals-in-objects.solution.ts similarity index 100% rename from src/030-classes/099-understand-classes.solution.ts rename to src/028-mutability/099-as-const-can-make-strings-infer-as-their-literals-in-objects.solution.ts diff --git a/src/030-classes/100-public-and-private-properties.problem.ts b/src/030-classes/100-understand-classes.problem.ts similarity index 100% rename from src/030-classes/100-public-and-private-properties.problem.ts rename to src/030-classes/100-understand-classes.problem.ts diff --git a/src/030-classes/100-public-and-private-properties.solution.ts b/src/030-classes/100-understand-classes.solution.ts similarity index 100% rename from src/030-classes/100-public-and-private-properties.solution.ts rename to src/030-classes/100-understand-classes.solution.ts diff --git a/src/030-classes/101-hash-in-javascript.problem.ts b/src/030-classes/101-public-and-private-properties.problem.ts similarity index 100% rename from src/030-classes/101-hash-in-javascript.problem.ts rename to src/030-classes/101-public-and-private-properties.problem.ts diff --git a/src/030-classes/101-hash-in-javascript.solution.ts b/src/030-classes/101-public-and-private-properties.solution.ts similarity index 100% rename from src/030-classes/101-hash-in-javascript.solution.ts rename to src/030-classes/101-public-and-private-properties.solution.ts diff --git a/src/030-classes/102-optional-class-properties.problem.ts b/src/030-classes/102-hash-in-javascript.problem.ts similarity index 100% rename from src/030-classes/102-optional-class-properties.problem.ts rename to src/030-classes/102-hash-in-javascript.problem.ts diff --git a/src/030-classes/102-optional-class-properties.solution.ts b/src/030-classes/102-hash-in-javascript.solution.ts similarity index 100% rename from src/030-classes/102-optional-class-properties.solution.ts rename to src/030-classes/102-hash-in-javascript.solution.ts diff --git a/src/030-classes/103-readonly-class-properties.problem.ts b/src/030-classes/103-optional-class-properties.problem.ts similarity index 100% rename from src/030-classes/103-readonly-class-properties.problem.ts rename to src/030-classes/103-optional-class-properties.problem.ts diff --git a/src/030-classes/103-readonly-class-properties.solution.ts b/src/030-classes/103-optional-class-properties.solution.ts similarity index 100% rename from src/030-classes/103-readonly-class-properties.solution.ts rename to src/030-classes/103-optional-class-properties.solution.ts diff --git a/src/030-classes/104-class-methods.problem.ts b/src/030-classes/104-readonly-class-properties.problem.ts similarity index 100% rename from src/030-classes/104-class-methods.problem.ts rename to src/030-classes/104-readonly-class-properties.problem.ts diff --git a/src/030-classes/104-class-methods.solution.ts b/src/030-classes/104-readonly-class-properties.solution.ts similarity index 100% rename from src/030-classes/104-class-methods.solution.ts rename to src/030-classes/104-readonly-class-properties.solution.ts diff --git a/src/030-classes/105-decorators.problem.ts b/src/030-classes/105-class-methods.problem.ts similarity index 100% rename from src/030-classes/105-decorators.problem.ts rename to src/030-classes/105-class-methods.problem.ts diff --git a/src/030-classes/105-decorators.solution.ts b/src/030-classes/105-class-methods.solution.ts similarity index 100% rename from src/030-classes/105-decorators.solution.ts rename to src/030-classes/105-class-methods.solution.ts diff --git a/src/030-classes/106-implementing-interfaces.problem.ts b/src/030-classes/106-decorators.problem.ts similarity index 100% rename from src/030-classes/106-implementing-interfaces.problem.ts rename to src/030-classes/106-decorators.problem.ts diff --git a/src/030-classes/106-implementing-interfaces.solution.ts b/src/030-classes/106-decorators.solution.ts similarity index 100% rename from src/030-classes/106-implementing-interfaces.solution.ts rename to src/030-classes/106-decorators.solution.ts diff --git a/src/030-classes/107-typing-this-in-functions.problem.ts b/src/030-classes/107-implementing-interfaces.problem.ts similarity index 100% rename from src/030-classes/107-typing-this-in-functions.problem.ts rename to src/030-classes/107-implementing-interfaces.problem.ts diff --git a/src/030-classes/107-typing-this-in-functions.solution.ts b/src/030-classes/107-implementing-interfaces.solution.ts similarity index 100% rename from src/030-classes/107-typing-this-in-functions.solution.ts rename to src/030-classes/107-implementing-interfaces.solution.ts diff --git a/src/030-classes/108-can-you-type-this-in-functions.problem.ts b/src/030-classes/108-typing-this-in-functions.problem.ts similarity index 100% rename from src/030-classes/108-can-you-type-this-in-functions.problem.ts rename to src/030-classes/108-typing-this-in-functions.problem.ts diff --git a/src/030-classes/108-can-you-type-this-in-functions.solution.ts b/src/030-classes/108-typing-this-in-functions.solution.ts similarity index 100% rename from src/030-classes/108-can-you-type-this-in-functions.solution.ts rename to src/030-classes/108-typing-this-in-functions.solution.ts diff --git a/src/032-typescript-only-features/109-auto-assignation-in-classes.problem.ts b/src/030-classes/109-can-you-type-this-in-functions.problem.ts similarity index 100% rename from src/032-typescript-only-features/109-auto-assignation-in-classes.problem.ts rename to src/030-classes/109-can-you-type-this-in-functions.problem.ts diff --git a/src/032-typescript-only-features/109-auto-assignation-in-classes.solution.ts b/src/030-classes/109-can-you-type-this-in-functions.solution.ts similarity index 100% rename from src/032-typescript-only-features/109-auto-assignation-in-classes.solution.ts rename to src/030-classes/109-can-you-type-this-in-functions.solution.ts diff --git a/src/032-typescript-only-features/110-enums.problem.ts b/src/032-typescript-only-features/110-auto-assignation-in-classes.problem.ts similarity index 100% rename from src/032-typescript-only-features/110-enums.problem.ts rename to src/032-typescript-only-features/110-auto-assignation-in-classes.problem.ts diff --git a/src/032-typescript-only-features/110-enums.solution.ts b/src/032-typescript-only-features/110-auto-assignation-in-classes.solution.ts similarity index 100% rename from src/032-typescript-only-features/110-enums.solution.ts rename to src/032-typescript-only-features/110-auto-assignation-in-classes.solution.ts diff --git a/src/032-typescript-only-features/111-const-enums.problem.ts b/src/032-typescript-only-features/111-enums.problem.ts similarity index 100% rename from src/032-typescript-only-features/111-const-enums.problem.ts rename to src/032-typescript-only-features/111-enums.problem.ts diff --git a/src/032-typescript-only-features/111-const-enums.solution.ts b/src/032-typescript-only-features/111-enums.solution.ts similarity index 100% rename from src/032-typescript-only-features/111-const-enums.solution.ts rename to src/032-typescript-only-features/111-enums.solution.ts diff --git a/src/032-typescript-only-features/112-namespaces.problem.ts b/src/032-typescript-only-features/112-const-enums.problem.ts similarity index 100% rename from src/032-typescript-only-features/112-namespaces.problem.ts rename to src/032-typescript-only-features/112-const-enums.problem.ts diff --git a/src/032-typescript-only-features/112-namespaces.solution.ts b/src/032-typescript-only-features/112-const-enums.solution.ts similarity index 100% rename from src/032-typescript-only-features/112-namespaces.solution.ts rename to src/032-typescript-only-features/112-const-enums.solution.ts diff --git a/src/032-typescript-only-features/113-namespaces-can-be-used-as-types-or-values.problem.ts b/src/032-typescript-only-features/113-namespaces.problem.ts similarity index 100% rename from src/032-typescript-only-features/113-namespaces-can-be-used-as-types-or-values.problem.ts rename to src/032-typescript-only-features/113-namespaces.problem.ts diff --git a/src/032-typescript-only-features/113-namespaces-can-be-used-as-types-or-values.solution.ts b/src/032-typescript-only-features/113-namespaces.solution.ts similarity index 100% rename from src/032-typescript-only-features/113-namespaces-can-be-used-as-types-or-values.solution.ts rename to src/032-typescript-only-features/113-namespaces.solution.ts diff --git a/src/032-typescript-only-features/114-namespaces-can-declaration-merge.problem.ts b/src/032-typescript-only-features/114-namespaces-can-be-used-as-types-or-values.problem.ts similarity index 100% rename from src/032-typescript-only-features/114-namespaces-can-declaration-merge.problem.ts rename to src/032-typescript-only-features/114-namespaces-can-be-used-as-types-or-values.problem.ts diff --git a/src/032-typescript-only-features/114-namespaces-can-declaration-merge.solution.ts b/src/032-typescript-only-features/114-namespaces-can-be-used-as-types-or-values.solution.ts similarity index 100% rename from src/032-typescript-only-features/114-namespaces-can-declaration-merge.solution.ts rename to src/032-typescript-only-features/114-namespaces-can-be-used-as-types-or-values.solution.ts diff --git a/src/032-typescript-only-features/115-interfaces-within-namespaces-can-declaration-merge.problem.ts b/src/032-typescript-only-features/115-namespaces-can-declaration-merge.problem.ts similarity index 100% rename from src/032-typescript-only-features/115-interfaces-within-namespaces-can-declaration-merge.problem.ts rename to src/032-typescript-only-features/115-namespaces-can-declaration-merge.problem.ts diff --git a/src/032-typescript-only-features/115-interfaces-within-namespaces-can-declaration-merge.solution.ts b/src/032-typescript-only-features/115-namespaces-can-declaration-merge.solution.ts similarity index 100% rename from src/032-typescript-only-features/115-interfaces-within-namespaces-can-declaration-merge.solution.ts rename to src/032-typescript-only-features/115-namespaces-can-declaration-merge.solution.ts diff --git a/src/032-typescript-only-features/116-should-you-use-namespaces.problem.ts b/src/032-typescript-only-features/116-interfaces-within-namespaces-can-declaration-merge.problem.ts similarity index 100% rename from src/032-typescript-only-features/116-should-you-use-namespaces.problem.ts rename to src/032-typescript-only-features/116-interfaces-within-namespaces-can-declaration-merge.problem.ts diff --git a/src/032-typescript-only-features/116-should-you-use-namespaces.solution.ts b/src/032-typescript-only-features/116-interfaces-within-namespaces-can-declaration-merge.solution.ts similarity index 100% rename from src/032-typescript-only-features/116-should-you-use-namespaces.solution.ts rename to src/032-typescript-only-features/116-interfaces-within-namespaces-can-declaration-merge.solution.ts diff --git a/src/035-understanding-the-compiler/117-any.problem.ts b/src/032-typescript-only-features/117-should-you-use-namespaces.problem.ts similarity index 100% rename from src/035-understanding-the-compiler/117-any.problem.ts rename to src/032-typescript-only-features/117-should-you-use-namespaces.problem.ts diff --git a/src/035-understanding-the-compiler/117-any.solution.ts b/src/032-typescript-only-features/117-should-you-use-namespaces.solution.ts similarity index 100% rename from src/035-understanding-the-compiler/117-any.solution.ts rename to src/032-typescript-only-features/117-should-you-use-namespaces.solution.ts diff --git a/src/035-understanding-the-compiler/118-global-typings-use-any.problem.ts b/src/035-understanding-the-compiler/118-any.problem.ts similarity index 100% rename from src/035-understanding-the-compiler/118-global-typings-use-any.problem.ts rename to src/035-understanding-the-compiler/118-any.problem.ts diff --git a/src/035-understanding-the-compiler/118-global-typings-use-any.solution.ts b/src/035-understanding-the-compiler/118-any.solution.ts similarity index 100% rename from src/035-understanding-the-compiler/118-global-typings-use-any.solution.ts rename to src/035-understanding-the-compiler/118-any.solution.ts diff --git a/src/035-understanding-the-compiler/119-as-and-as-any.problem.ts b/src/035-understanding-the-compiler/119-global-typings-use-any.problem.ts similarity index 100% rename from src/035-understanding-the-compiler/119-as-and-as-any.problem.ts rename to src/035-understanding-the-compiler/119-global-typings-use-any.problem.ts diff --git a/src/035-understanding-the-compiler/119-as-and-as-any.solution.ts b/src/035-understanding-the-compiler/119-global-typings-use-any.solution.ts similarity index 100% rename from src/035-understanding-the-compiler/119-as-and-as-any.solution.ts rename to src/035-understanding-the-compiler/119-global-typings-use-any.solution.ts diff --git a/src/035-understanding-the-compiler/120-limits-of-as.problem.ts b/src/035-understanding-the-compiler/120-as-and-as-any.problem.ts similarity index 100% rename from src/035-understanding-the-compiler/120-limits-of-as.problem.ts rename to src/035-understanding-the-compiler/120-as-and-as-any.problem.ts diff --git a/src/035-understanding-the-compiler/120-limits-of-as.solution.ts b/src/035-understanding-the-compiler/120-as-and-as-any.solution.ts similarity index 100% rename from src/035-understanding-the-compiler/120-limits-of-as.solution.ts rename to src/035-understanding-the-compiler/120-as-and-as-any.solution.ts diff --git a/src/035-understanding-the-compiler/121-ts-ignore.problem.ts b/src/035-understanding-the-compiler/121-limits-of-as.problem.ts similarity index 100% rename from src/035-understanding-the-compiler/121-ts-ignore.problem.ts rename to src/035-understanding-the-compiler/121-limits-of-as.problem.ts diff --git a/src/035-understanding-the-compiler/121-ts-ignore.solution.ts b/src/035-understanding-the-compiler/121-limits-of-as.solution.ts similarity index 100% rename from src/035-understanding-the-compiler/121-ts-ignore.solution.ts rename to src/035-understanding-the-compiler/121-limits-of-as.solution.ts diff --git a/src/035-understanding-the-compiler/122-ts-expect-error.problem.ts b/src/035-understanding-the-compiler/122-ts-ignore.problem.ts similarity index 100% rename from src/035-understanding-the-compiler/122-ts-expect-error.problem.ts rename to src/035-understanding-the-compiler/122-ts-ignore.problem.ts diff --git a/src/035-understanding-the-compiler/122-ts-expect-error.solution.ts b/src/035-understanding-the-compiler/122-ts-ignore.solution.ts similarity index 100% rename from src/035-understanding-the-compiler/122-ts-expect-error.solution.ts rename to src/035-understanding-the-compiler/122-ts-ignore.solution.ts diff --git a/src/035-understanding-the-compiler/123-satisfies.problem.ts b/src/035-understanding-the-compiler/123-ts-expect-error.problem.ts similarity index 100% rename from src/035-understanding-the-compiler/123-satisfies.problem.ts rename to src/035-understanding-the-compiler/123-ts-expect-error.problem.ts diff --git a/src/035-understanding-the-compiler/123-satisfies.solution.ts b/src/035-understanding-the-compiler/123-ts-expect-error.solution.ts similarity index 100% rename from src/035-understanding-the-compiler/123-satisfies.solution.ts rename to src/035-understanding-the-compiler/123-ts-expect-error.solution.ts diff --git a/src/035-understanding-the-compiler/124-satisfies-with-as-const.problem.ts b/src/035-understanding-the-compiler/124-satisfies.problem.ts similarity index 100% rename from src/035-understanding-the-compiler/124-satisfies-with-as-const.problem.ts rename to src/035-understanding-the-compiler/124-satisfies.problem.ts diff --git a/src/035-understanding-the-compiler/124-satisfies-with-as-const.solution.ts b/src/035-understanding-the-compiler/124-satisfies.solution.ts similarity index 100% rename from src/035-understanding-the-compiler/124-satisfies-with-as-const.solution.ts rename to src/035-understanding-the-compiler/124-satisfies.solution.ts diff --git a/src/035-understanding-the-compiler/125-annotating-errors-a-function-throws.problem.ts b/src/035-understanding-the-compiler/125-satisfies-with-as-const.problem.ts similarity index 100% rename from src/035-understanding-the-compiler/125-annotating-errors-a-function-throws.problem.ts rename to src/035-understanding-the-compiler/125-satisfies-with-as-const.problem.ts diff --git a/src/035-understanding-the-compiler/125-annotating-errors-a-function-throws.solution.ts b/src/035-understanding-the-compiler/125-satisfies-with-as-const.solution.ts similarity index 100% rename from src/035-understanding-the-compiler/125-annotating-errors-a-function-throws.solution.ts rename to src/035-understanding-the-compiler/125-satisfies-with-as-const.solution.ts diff --git a/src/035-understanding-the-compiler/126-excess-properties-warnings.problem.ts b/src/035-understanding-the-compiler/126-annotating-errors-a-function-throws.problem.ts similarity index 100% rename from src/035-understanding-the-compiler/126-excess-properties-warnings.problem.ts rename to src/035-understanding-the-compiler/126-annotating-errors-a-function-throws.problem.ts diff --git a/src/035-understanding-the-compiler/126-excess-properties-warnings.solution.ts b/src/035-understanding-the-compiler/126-annotating-errors-a-function-throws.solution.ts similarity index 100% rename from src/035-understanding-the-compiler/126-excess-properties-warnings.solution.ts rename to src/035-understanding-the-compiler/126-annotating-errors-a-function-throws.solution.ts diff --git a/src/035-understanding-the-compiler/127-object-keys-and-object-entries.problem.ts b/src/035-understanding-the-compiler/127-excess-properties-warnings.problem.ts similarity index 100% rename from src/035-understanding-the-compiler/127-object-keys-and-object-entries.problem.ts rename to src/035-understanding-the-compiler/127-excess-properties-warnings.problem.ts diff --git a/src/035-understanding-the-compiler/127-object-keys-and-object-entries.solution.ts b/src/035-understanding-the-compiler/127-excess-properties-warnings.solution.ts similarity index 100% rename from src/035-understanding-the-compiler/127-object-keys-and-object-entries.solution.ts rename to src/035-understanding-the-compiler/127-excess-properties-warnings.solution.ts diff --git a/src/035-understanding-the-compiler/128-structural-vs-nominal-typing.problem.ts b/src/035-understanding-the-compiler/128-object-keys-and-object-entries.problem.ts similarity index 100% rename from src/035-understanding-the-compiler/128-structural-vs-nominal-typing.problem.ts rename to src/035-understanding-the-compiler/128-object-keys-and-object-entries.problem.ts diff --git a/src/035-understanding-the-compiler/128-structural-vs-nominal-typing.solution.ts b/src/035-understanding-the-compiler/128-object-keys-and-object-entries.solution.ts similarity index 100% rename from src/035-understanding-the-compiler/128-structural-vs-nominal-typing.solution.ts rename to src/035-understanding-the-compiler/128-object-keys-and-object-entries.solution.ts diff --git a/src/035-understanding-the-compiler/129-how-enums-break-structural-typing.problem.ts b/src/035-understanding-the-compiler/129-structural-vs-nominal-typing.problem.ts similarity index 100% rename from src/035-understanding-the-compiler/129-how-enums-break-structural-typing.problem.ts rename to src/035-understanding-the-compiler/129-structural-vs-nominal-typing.problem.ts diff --git a/src/035-understanding-the-compiler/129-how-enums-break-structural-typing.solution.ts b/src/035-understanding-the-compiler/129-structural-vs-nominal-typing.solution.ts similarity index 100% rename from src/035-understanding-the-compiler/129-how-enums-break-structural-typing.solution.ts rename to src/035-understanding-the-compiler/129-structural-vs-nominal-typing.solution.ts diff --git a/src/035-understanding-the-compiler/130-unions-of-functions.problem.ts b/src/035-understanding-the-compiler/130-how-enums-break-structural-typing.problem.ts similarity index 100% rename from src/035-understanding-the-compiler/130-unions-of-functions.problem.ts rename to src/035-understanding-the-compiler/130-how-enums-break-structural-typing.problem.ts diff --git a/src/035-understanding-the-compiler/130-unions-of-functions.solution.ts b/src/035-understanding-the-compiler/130-how-enums-break-structural-typing.solution.ts similarity index 100% rename from src/035-understanding-the-compiler/130-unions-of-functions.solution.ts rename to src/035-understanding-the-compiler/130-how-enums-break-structural-typing.solution.ts diff --git a/src/035-understanding-the-compiler/131-empty-object-type.problem.ts b/src/035-understanding-the-compiler/131-unions-of-functions.problem.ts similarity index 100% rename from src/035-understanding-the-compiler/131-empty-object-type.problem.ts rename to src/035-understanding-the-compiler/131-unions-of-functions.problem.ts diff --git a/src/035-understanding-the-compiler/131-empty-object-type.solution.ts b/src/035-understanding-the-compiler/131-unions-of-functions.solution.ts similarity index 100% rename from src/035-understanding-the-compiler/131-empty-object-type.solution.ts rename to src/035-understanding-the-compiler/131-unions-of-functions.solution.ts diff --git a/src/040-deriving-types-from-values/132-typeof-keyword.problem.ts b/src/035-understanding-the-compiler/132-empty-object-type.problem.ts similarity index 100% rename from src/040-deriving-types-from-values/132-typeof-keyword.problem.ts rename to src/035-understanding-the-compiler/132-empty-object-type.problem.ts diff --git a/src/040-deriving-types-from-values/132-typeof-keyword.solution.ts b/src/035-understanding-the-compiler/132-empty-object-type.solution.ts similarity index 100% rename from src/040-deriving-types-from-values/132-typeof-keyword.solution.ts rename to src/035-understanding-the-compiler/132-empty-object-type.solution.ts diff --git a/src/040-deriving-types-from-values/133-create-runtime-values-from-types.problem.ts b/src/035-understanding-the-compiler/133-truly-empty-object.problem.ts similarity index 100% rename from src/040-deriving-types-from-values/133-create-runtime-values-from-types.problem.ts rename to src/035-understanding-the-compiler/133-truly-empty-object.problem.ts diff --git a/src/040-deriving-types-from-values/133-create-runtime-values-from-types.solution.ts b/src/035-understanding-the-compiler/133-truly-empty-object.solution.ts similarity index 100% rename from src/040-deriving-types-from-values/133-create-runtime-values-from-types.solution.ts rename to src/035-understanding-the-compiler/133-truly-empty-object.solution.ts diff --git a/src/040-deriving-types-from-values/134-classes-and-enums-cross-value-and-type-world.problem.ts b/src/040-deriving-types-from-values/134-typeof-keyword.problem.ts similarity index 100% rename from src/040-deriving-types-from-values/134-classes-and-enums-cross-value-and-type-world.problem.ts rename to src/040-deriving-types-from-values/134-typeof-keyword.problem.ts diff --git a/src/040-deriving-types-from-values/134-classes-and-enums-cross-value-and-type-world.solution.ts b/src/040-deriving-types-from-values/134-typeof-keyword.solution.ts similarity index 100% rename from src/040-deriving-types-from-values/134-classes-and-enums-cross-value-and-type-world.solution.ts rename to src/040-deriving-types-from-values/134-typeof-keyword.solution.ts diff --git a/src/040-deriving-types-from-values/135-this-crosses-value-and-type-world.problem.ts b/src/040-deriving-types-from-values/135-create-runtime-values-from-types.problem.ts similarity index 100% rename from src/040-deriving-types-from-values/135-this-crosses-value-and-type-world.problem.ts rename to src/040-deriving-types-from-values/135-create-runtime-values-from-types.problem.ts diff --git a/src/040-deriving-types-from-values/135-this-crosses-value-and-type-world.solution.ts b/src/040-deriving-types-from-values/135-create-runtime-values-from-types.solution.ts similarity index 100% rename from src/040-deriving-types-from-values/135-this-crosses-value-and-type-world.solution.ts rename to src/040-deriving-types-from-values/135-create-runtime-values-from-types.solution.ts diff --git a/src/040-deriving-types-from-values/136-return-type.problem.ts b/src/040-deriving-types-from-values/136-classes-and-enums-cross-value-and-type-world.problem.ts similarity index 100% rename from src/040-deriving-types-from-values/136-return-type.problem.ts rename to src/040-deriving-types-from-values/136-classes-and-enums-cross-value-and-type-world.problem.ts diff --git a/src/040-deriving-types-from-values/136-return-type.solution.ts b/src/040-deriving-types-from-values/136-classes-and-enums-cross-value-and-type-world.solution.ts similarity index 100% rename from src/040-deriving-types-from-values/136-return-type.solution.ts rename to src/040-deriving-types-from-values/136-classes-and-enums-cross-value-and-type-world.solution.ts diff --git a/src/040-deriving-types-from-values/137-parameters-type-helper.problem.ts b/src/040-deriving-types-from-values/137-this-crosses-value-and-type-world.problem.ts similarity index 100% rename from src/040-deriving-types-from-values/137-parameters-type-helper.problem.ts rename to src/040-deriving-types-from-values/137-this-crosses-value-and-type-world.problem.ts diff --git a/src/040-deriving-types-from-values/137-parameters-type-helper.solution.ts b/src/040-deriving-types-from-values/137-this-crosses-value-and-type-world.solution.ts similarity index 100% rename from src/040-deriving-types-from-values/137-parameters-type-helper.solution.ts rename to src/040-deriving-types-from-values/137-this-crosses-value-and-type-world.solution.ts diff --git a/src/040-deriving-types-from-values/138-keyof.problem.ts b/src/040-deriving-types-from-values/138-return-type.problem.ts similarity index 100% rename from src/040-deriving-types-from-values/138-keyof.problem.ts rename to src/040-deriving-types-from-values/138-return-type.problem.ts diff --git a/src/040-deriving-types-from-values/138-keyof.solution.ts b/src/040-deriving-types-from-values/138-return-type.solution.ts similarity index 100% rename from src/040-deriving-types-from-values/138-keyof.solution.ts rename to src/040-deriving-types-from-values/138-return-type.solution.ts diff --git a/src/040-deriving-types-from-values/139-indexed-access-types.problem.ts b/src/040-deriving-types-from-values/139-parameters-type-helper.problem.ts similarity index 100% rename from src/040-deriving-types-from-values/139-indexed-access-types.problem.ts rename to src/040-deriving-types-from-values/139-parameters-type-helper.problem.ts diff --git a/src/040-deriving-types-from-values/139-indexed-access-types.solution.ts b/src/040-deriving-types-from-values/139-parameters-type-helper.solution.ts similarity index 100% rename from src/040-deriving-types-from-values/139-indexed-access-types.solution.ts rename to src/040-deriving-types-from-values/139-parameters-type-helper.solution.ts diff --git a/src/040-deriving-types-from-values/140-pass-unions-to-indexed-access-types.problem.ts b/src/040-deriving-types-from-values/140-keyof.problem.ts similarity index 100% rename from src/040-deriving-types-from-values/140-pass-unions-to-indexed-access-types.problem.ts rename to src/040-deriving-types-from-values/140-keyof.problem.ts diff --git a/src/040-deriving-types-from-values/140-pass-unions-to-indexed-access-types.solution.ts b/src/040-deriving-types-from-values/140-keyof.solution.ts similarity index 100% rename from src/040-deriving-types-from-values/140-pass-unions-to-indexed-access-types.solution.ts rename to src/040-deriving-types-from-values/140-keyof.solution.ts diff --git a/src/040-deriving-types-from-values/141-pass-keyof-into-an-indexed-access-type.problem.ts b/src/040-deriving-types-from-values/141-indexed-access-types.problem.ts similarity index 100% rename from src/040-deriving-types-from-values/141-pass-keyof-into-an-indexed-access-type.problem.ts rename to src/040-deriving-types-from-values/141-indexed-access-types.problem.ts diff --git a/src/040-deriving-types-from-values/141-pass-keyof-into-an-indexed-access-type.solution.ts b/src/040-deriving-types-from-values/141-indexed-access-types.solution.ts similarity index 100% rename from src/040-deriving-types-from-values/141-pass-keyof-into-an-indexed-access-type.solution.ts rename to src/040-deriving-types-from-values/141-indexed-access-types.solution.ts diff --git a/src/040-deriving-types-from-values/142-create-an-enum-from-as-const-object.problem.ts b/src/040-deriving-types-from-values/142-pass-unions-to-indexed-access-types.problem.ts similarity index 100% rename from src/040-deriving-types-from-values/142-create-an-enum-from-as-const-object.problem.ts rename to src/040-deriving-types-from-values/142-pass-unions-to-indexed-access-types.problem.ts diff --git a/src/040-deriving-types-from-values/142-create-an-enum-from-as-const-object.solution.ts b/src/040-deriving-types-from-values/142-pass-unions-to-indexed-access-types.solution.ts similarity index 100% rename from src/040-deriving-types-from-values/142-create-an-enum-from-as-const-object.solution.ts rename to src/040-deriving-types-from-values/142-pass-unions-to-indexed-access-types.solution.ts diff --git a/src/040-deriving-types-from-values/143-create-a-union-from-an-as-const-array.problem.ts b/src/040-deriving-types-from-values/143-pass-keyof-into-an-indexed-access-type.problem.ts similarity index 100% rename from src/040-deriving-types-from-values/143-create-a-union-from-an-as-const-array.problem.ts rename to src/040-deriving-types-from-values/143-pass-keyof-into-an-indexed-access-type.problem.ts diff --git a/src/040-deriving-types-from-values/143-create-a-union-from-an-as-const-array.solution.ts b/src/040-deriving-types-from-values/143-pass-keyof-into-an-indexed-access-type.solution.ts similarity index 100% rename from src/040-deriving-types-from-values/143-create-a-union-from-an-as-const-array.solution.ts rename to src/040-deriving-types-from-values/143-pass-keyof-into-an-indexed-access-type.solution.ts diff --git a/src/040-deriving-types-from-values/144-should-i-use-enums-or-as-const.problem.ts b/src/040-deriving-types-from-values/144-create-an-enum-from-as-const-object.problem.ts similarity index 100% rename from src/040-deriving-types-from-values/144-should-i-use-enums-or-as-const.problem.ts rename to src/040-deriving-types-from-values/144-create-an-enum-from-as-const-object.problem.ts diff --git a/src/040-deriving-types-from-values/144-should-i-use-enums-or-as-const.solution.ts b/src/040-deriving-types-from-values/144-create-an-enum-from-as-const-object.solution.ts similarity index 100% rename from src/040-deriving-types-from-values/144-should-i-use-enums-or-as-const.solution.ts rename to src/040-deriving-types-from-values/144-create-an-enum-from-as-const-object.solution.ts diff --git a/src/040-deriving-types-from-values/145-using-numeric-comparators-on-enums.problem.ts b/src/040-deriving-types-from-values/145-create-a-union-from-an-as-const-array.problem.ts similarity index 100% rename from src/040-deriving-types-from-values/145-using-numeric-comparators-on-enums.problem.ts rename to src/040-deriving-types-from-values/145-create-a-union-from-an-as-const-array.problem.ts diff --git a/src/040-deriving-types-from-values/145-using-numeric-comparators-on-enums.solution.ts b/src/040-deriving-types-from-values/145-create-a-union-from-an-as-const-array.solution.ts similarity index 100% rename from src/040-deriving-types-from-values/145-using-numeric-comparators-on-enums.solution.ts rename to src/040-deriving-types-from-values/145-create-a-union-from-an-as-const-array.solution.ts diff --git a/src/060-modules-and-namespaces/146-module-or-script.problem.ts b/src/040-deriving-types-from-values/146-should-i-use-enums-or-as-const.problem.ts similarity index 100% rename from src/060-modules-and-namespaces/146-module-or-script.problem.ts rename to src/040-deriving-types-from-values/146-should-i-use-enums-or-as-const.problem.ts diff --git a/src/060-modules-and-namespaces/146-module-or-script.solution.ts b/src/040-deriving-types-from-values/146-should-i-use-enums-or-as-const.solution.ts similarity index 100% rename from src/060-modules-and-namespaces/146-module-or-script.solution.ts rename to src/040-deriving-types-from-values/146-should-i-use-enums-or-as-const.solution.ts diff --git a/src/060-modules-and-namespaces/147-module-detection-force.problem.ts b/src/040-deriving-types-from-values/147-using-numeric-comparators-on-enums.problem.ts similarity index 100% rename from src/060-modules-and-namespaces/147-module-detection-force.problem.ts rename to src/040-deriving-types-from-values/147-using-numeric-comparators-on-enums.problem.ts diff --git a/src/060-modules-and-namespaces/147-module-detection-force.solution.ts b/src/040-deriving-types-from-values/147-using-numeric-comparators-on-enums.solution.ts similarity index 100% rename from src/060-modules-and-namespaces/147-module-detection-force.solution.ts rename to src/040-deriving-types-from-values/147-using-numeric-comparators-on-enums.solution.ts diff --git a/src/060-modules-and-namespaces/148-isolated-modules.problem.ts b/src/060-modules-and-namespaces/148-module-or-script.problem.ts similarity index 100% rename from src/060-modules-and-namespaces/148-isolated-modules.problem.ts rename to src/060-modules-and-namespaces/148-module-or-script.problem.ts diff --git a/src/060-modules-and-namespaces/148-isolated-modules.solution.ts b/src/060-modules-and-namespaces/148-module-or-script.solution.ts similarity index 100% rename from src/060-modules-and-namespaces/148-isolated-modules.solution.ts rename to src/060-modules-and-namespaces/148-module-or-script.solution.ts diff --git a/src/060-modules-and-namespaces/149-cjs-vs-esm.problem.ts b/src/060-modules-and-namespaces/149-module-detection-force.problem.ts similarity index 100% rename from src/060-modules-and-namespaces/149-cjs-vs-esm.problem.ts rename to src/060-modules-and-namespaces/149-module-detection-force.problem.ts diff --git a/src/060-modules-and-namespaces/149-cjs-vs-esm.solution.ts b/src/060-modules-and-namespaces/149-module-detection-force.solution.ts similarity index 100% rename from src/060-modules-and-namespaces/149-cjs-vs-esm.solution.ts rename to src/060-modules-and-namespaces/149-module-detection-force.solution.ts diff --git a/src/060-modules-and-namespaces/150-module-resolution-bundler-or-nodenext.problem.ts b/src/060-modules-and-namespaces/150-isolated-modules.problem.ts similarity index 100% rename from src/060-modules-and-namespaces/150-module-resolution-bundler-or-nodenext.problem.ts rename to src/060-modules-and-namespaces/150-isolated-modules.problem.ts diff --git a/src/060-modules-and-namespaces/150-module-resolution-bundler-or-nodenext.solution.ts b/src/060-modules-and-namespaces/150-isolated-modules.solution.ts similarity index 100% rename from src/060-modules-and-namespaces/150-module-resolution-bundler-or-nodenext.solution.ts rename to src/060-modules-and-namespaces/150-isolated-modules.solution.ts diff --git a/src/060-modules-and-namespaces/151-declaration-files.problem.ts b/src/060-modules-and-namespaces/151-cjs-vs-esm.problem.ts similarity index 100% rename from src/060-modules-and-namespaces/151-declaration-files.problem.ts rename to src/060-modules-and-namespaces/151-cjs-vs-esm.problem.ts diff --git a/src/060-modules-and-namespaces/151-declaration-files.solution.ts b/src/060-modules-and-namespaces/151-cjs-vs-esm.solution.ts similarity index 100% rename from src/060-modules-and-namespaces/151-declaration-files.solution.ts rename to src/060-modules-and-namespaces/151-cjs-vs-esm.solution.ts diff --git a/src/060-modules-and-namespaces/152-skip-lib-check-true.problem.ts b/src/060-modules-and-namespaces/152-module-resolution-bundler-or-nodenext.problem.ts similarity index 100% rename from src/060-modules-and-namespaces/152-skip-lib-check-true.problem.ts rename to src/060-modules-and-namespaces/152-module-resolution-bundler-or-nodenext.problem.ts diff --git a/src/060-modules-and-namespaces/152-skip-lib-check-true.solution.ts b/src/060-modules-and-namespaces/152-module-resolution-bundler-or-nodenext.solution.ts similarity index 100% rename from src/060-modules-and-namespaces/152-skip-lib-check-true.solution.ts rename to src/060-modules-and-namespaces/152-module-resolution-bundler-or-nodenext.solution.ts diff --git a/src/060-modules-and-namespaces/153-declaration-files-can-be-modules-or-scripts.problem.ts b/src/060-modules-and-namespaces/153-declaration-files.problem.ts similarity index 100% rename from src/060-modules-and-namespaces/153-declaration-files-can-be-modules-or-scripts.problem.ts rename to src/060-modules-and-namespaces/153-declaration-files.problem.ts diff --git a/src/060-modules-and-namespaces/153-declaration-files-can-be-modules-or-scripts.solution.ts b/src/060-modules-and-namespaces/153-declaration-files.solution.ts similarity index 100% rename from src/060-modules-and-namespaces/153-declaration-files-can-be-modules-or-scripts.solution.ts rename to src/060-modules-and-namespaces/153-declaration-files.solution.ts diff --git a/src/060-modules-and-namespaces/154-declaration-files-can-be-used-to-type-js-files.problem.ts b/src/060-modules-and-namespaces/154-skip-lib-check-true.problem.ts similarity index 100% rename from src/060-modules-and-namespaces/154-declaration-files-can-be-used-to-type-js-files.problem.ts rename to src/060-modules-and-namespaces/154-skip-lib-check-true.problem.ts diff --git a/src/060-modules-and-namespaces/154-declaration-files-can-be-used-to-type-js-files.solution.ts b/src/060-modules-and-namespaces/154-skip-lib-check-true.solution.ts similarity index 100% rename from src/060-modules-and-namespaces/154-declaration-files-can-be-used-to-type-js-files.solution.ts rename to src/060-modules-and-namespaces/154-skip-lib-check-true.solution.ts diff --git a/src/060-modules-and-namespaces/155-should-you-use-declaration-files.problem.ts b/src/060-modules-and-namespaces/155-declaration-files-can-be-modules-or-scripts.problem.ts similarity index 100% rename from src/060-modules-and-namespaces/155-should-you-use-declaration-files.problem.ts rename to src/060-modules-and-namespaces/155-declaration-files-can-be-modules-or-scripts.problem.ts diff --git a/src/060-modules-and-namespaces/155-should-you-use-declaration-files.solution.ts b/src/060-modules-and-namespaces/155-declaration-files-can-be-modules-or-scripts.solution.ts similarity index 100% rename from src/060-modules-and-namespaces/155-should-you-use-declaration-files.solution.ts rename to src/060-modules-and-namespaces/155-declaration-files-can-be-modules-or-scripts.solution.ts diff --git a/src/060-modules-and-namespaces/156-resolve-json-module.problem.ts b/src/060-modules-and-namespaces/156-declaration-files-can-be-used-to-type-js-files.problem.ts similarity index 100% rename from src/060-modules-and-namespaces/156-resolve-json-module.problem.ts rename to src/060-modules-and-namespaces/156-declaration-files-can-be-used-to-type-js-files.problem.ts diff --git a/src/060-modules-and-namespaces/156-resolve-json-module.solution.ts b/src/060-modules-and-namespaces/156-declaration-files-can-be-used-to-type-js-files.solution.ts similarity index 100% rename from src/060-modules-and-namespaces/156-resolve-json-module.solution.ts rename to src/060-modules-and-namespaces/156-declaration-files-can-be-used-to-type-js-files.solution.ts diff --git a/src/060-modules-and-namespaces/157-json-d-ts-files.problem.ts b/src/060-modules-and-namespaces/157-should-you-use-declaration-files.problem.ts similarity index 100% rename from src/060-modules-and-namespaces/157-json-d-ts-files.problem.ts rename to src/060-modules-and-namespaces/157-should-you-use-declaration-files.problem.ts diff --git a/src/060-modules-and-namespaces/157-json-d-ts-files.solution.ts b/src/060-modules-and-namespaces/157-should-you-use-declaration-files.solution.ts similarity index 100% rename from src/060-modules-and-namespaces/157-json-d-ts-files.solution.ts rename to src/060-modules-and-namespaces/157-should-you-use-declaration-files.solution.ts diff --git a/src/062-the-global-namespace/158-ambient-context-and-declare-const.problem.ts b/src/060-modules-and-namespaces/158-resolve-json-module.problem.ts similarity index 100% rename from src/062-the-global-namespace/158-ambient-context-and-declare-const.problem.ts rename to src/060-modules-and-namespaces/158-resolve-json-module.problem.ts diff --git a/src/062-the-global-namespace/158-ambient-context-and-declare-const.solution.ts b/src/060-modules-and-namespaces/158-resolve-json-module.solution.ts similarity index 100% rename from src/062-the-global-namespace/158-ambient-context-and-declare-const.solution.ts rename to src/060-modules-and-namespaces/158-resolve-json-module.solution.ts diff --git a/src/062-the-global-namespace/159-declare-global.problem.ts b/src/060-modules-and-namespaces/159-json-d-ts-files.problem.ts similarity index 100% rename from src/062-the-global-namespace/159-declare-global.problem.ts rename to src/060-modules-and-namespaces/159-json-d-ts-files.problem.ts diff --git a/src/062-the-global-namespace/159-declare-global.solution.ts b/src/060-modules-and-namespaces/159-json-d-ts-files.solution.ts similarity index 100% rename from src/062-the-global-namespace/159-declare-global.solution.ts rename to src/060-modules-and-namespaces/159-json-d-ts-files.solution.ts diff --git a/src/062-the-global-namespace/160-globals-are-tied-to-a-single-tsconfig.problem.ts b/src/062-the-global-namespace/160-ambient-context-and-declare-const.problem.ts similarity index 100% rename from src/062-the-global-namespace/160-globals-are-tied-to-a-single-tsconfig.problem.ts rename to src/062-the-global-namespace/160-ambient-context-and-declare-const.problem.ts diff --git a/src/062-the-global-namespace/160-globals-are-tied-to-a-single-tsconfig.solution.ts b/src/062-the-global-namespace/160-ambient-context-and-declare-const.solution.ts similarity index 100% rename from src/062-the-global-namespace/160-globals-are-tied-to-a-single-tsconfig.solution.ts rename to src/062-the-global-namespace/160-ambient-context-and-declare-const.solution.ts diff --git a/src/062-the-global-namespace/161-declare-global-or-declaration-file.problem.ts b/src/062-the-global-namespace/161-declare-global.problem.ts similarity index 100% rename from src/062-the-global-namespace/161-declare-global-or-declaration-file.problem.ts rename to src/062-the-global-namespace/161-declare-global.problem.ts diff --git a/src/062-the-global-namespace/161-declare-global-or-declaration-file.solution.ts b/src/062-the-global-namespace/161-declare-global.solution.ts similarity index 100% rename from src/062-the-global-namespace/161-declare-global-or-declaration-file.solution.ts rename to src/062-the-global-namespace/161-declare-global.solution.ts diff --git a/src/062-the-global-namespace/162-declare-module.problem.ts b/src/062-the-global-namespace/162-globals-are-tied-to-a-single-tsconfig.problem.ts similarity index 100% rename from src/062-the-global-namespace/162-declare-module.problem.ts rename to src/062-the-global-namespace/162-globals-are-tied-to-a-single-tsconfig.problem.ts diff --git a/src/062-the-global-namespace/162-declare-module.solution.ts b/src/062-the-global-namespace/162-globals-are-tied-to-a-single-tsconfig.solution.ts similarity index 100% rename from src/062-the-global-namespace/162-declare-module.solution.ts rename to src/062-the-global-namespace/162-globals-are-tied-to-a-single-tsconfig.solution.ts diff --git a/src/062-the-global-namespace/163-wildcard-in-declare-module.problem.ts b/src/062-the-global-namespace/163-declare-global-or-declaration-file.problem.ts similarity index 100% rename from src/062-the-global-namespace/163-wildcard-in-declare-module.problem.ts rename to src/062-the-global-namespace/163-declare-global-or-declaration-file.problem.ts diff --git a/src/062-the-global-namespace/163-wildcard-in-declare-module.solution.ts b/src/062-the-global-namespace/163-declare-global-or-declaration-file.solution.ts similarity index 100% rename from src/062-the-global-namespace/163-wildcard-in-declare-module.solution.ts rename to src/062-the-global-namespace/163-declare-global-or-declaration-file.solution.ts diff --git a/src/062-the-global-namespace/164-modifying-window.problem.ts b/src/062-the-global-namespace/164-declare-module.problem.ts similarity index 100% rename from src/062-the-global-namespace/164-modifying-window.problem.ts rename to src/062-the-global-namespace/164-declare-module.problem.ts diff --git a/src/062-the-global-namespace/164-modifying-window.solution.ts b/src/062-the-global-namespace/164-declare-module.solution.ts similarity index 100% rename from src/062-the-global-namespace/164-modifying-window.solution.ts rename to src/062-the-global-namespace/164-declare-module.solution.ts diff --git a/src/062-the-global-namespace/165-modifying-globalthis.problem.ts b/src/062-the-global-namespace/165-wildcard-in-declare-module.problem.ts similarity index 100% rename from src/062-the-global-namespace/165-modifying-globalthis.problem.ts rename to src/062-the-global-namespace/165-wildcard-in-declare-module.problem.ts diff --git a/src/062-the-global-namespace/165-modifying-globalthis.solution.ts b/src/062-the-global-namespace/165-wildcard-in-declare-module.solution.ts similarity index 100% rename from src/062-the-global-namespace/165-modifying-globalthis.solution.ts rename to src/062-the-global-namespace/165-wildcard-in-declare-module.solution.ts diff --git a/src/062-the-global-namespace/166-modifying-process-env.problem.ts b/src/062-the-global-namespace/166-modifying-window.problem.ts similarity index 100% rename from src/062-the-global-namespace/166-modifying-process-env.problem.ts rename to src/062-the-global-namespace/166-modifying-window.problem.ts diff --git a/src/062-the-global-namespace/166-modifying-process-env.solution.ts b/src/062-the-global-namespace/166-modifying-window.solution.ts similarity index 100% rename from src/062-the-global-namespace/166-modifying-process-env.solution.ts rename to src/062-the-global-namespace/166-modifying-window.solution.ts diff --git a/src/065-four-spaces-of-typescript-declarations/167-declare-module-for-overriding-third-party-libraries.problem.ts b/src/062-the-global-namespace/167-modifying-globalthis.problem.ts similarity index 100% rename from src/065-four-spaces-of-typescript-declarations/167-declare-module-for-overriding-third-party-libraries.problem.ts rename to src/062-the-global-namespace/167-modifying-globalthis.problem.ts diff --git a/src/065-four-spaces-of-typescript-declarations/167-declare-module-for-overriding-third-party-libraries.solution.ts b/src/062-the-global-namespace/167-modifying-globalthis.solution.ts similarity index 100% rename from src/065-four-spaces-of-typescript-declarations/167-declare-module-for-overriding-third-party-libraries.solution.ts rename to src/062-the-global-namespace/167-modifying-globalthis.solution.ts diff --git a/src/065-four-spaces-of-typescript-declarations/168-lib-d-ts.problem.ts b/src/062-the-global-namespace/168-modifying-process-env.problem.ts similarity index 100% rename from src/065-four-spaces-of-typescript-declarations/168-lib-d-ts.problem.ts rename to src/062-the-global-namespace/168-modifying-process-env.problem.ts diff --git a/src/065-four-spaces-of-typescript-declarations/168-lib-d-ts.solution.ts b/src/062-the-global-namespace/168-modifying-process-env.solution.ts similarity index 100% rename from src/065-four-spaces-of-typescript-declarations/168-lib-d-ts.solution.ts rename to src/062-the-global-namespace/168-modifying-process-env.solution.ts diff --git a/src/065-four-spaces-of-typescript-declarations/169-using-target-to-change-lib-d-ts.problem.ts b/src/065-four-spaces-of-typescript-declarations/169-declare-module-for-overriding-third-party-libraries.problem.ts similarity index 100% rename from src/065-four-spaces-of-typescript-declarations/169-using-target-to-change-lib-d-ts.problem.ts rename to src/065-four-spaces-of-typescript-declarations/169-declare-module-for-overriding-third-party-libraries.problem.ts diff --git a/src/065-four-spaces-of-typescript-declarations/169-using-target-to-change-lib-d-ts.solution.ts b/src/065-four-spaces-of-typescript-declarations/169-declare-module-for-overriding-third-party-libraries.solution.ts similarity index 100% rename from src/065-four-spaces-of-typescript-declarations/169-using-target-to-change-lib-d-ts.solution.ts rename to src/065-four-spaces-of-typescript-declarations/169-declare-module-for-overriding-third-party-libraries.solution.ts diff --git a/src/065-four-spaces-of-typescript-declarations/170-lib-dom-d-ts.problem.ts b/src/065-four-spaces-of-typescript-declarations/170-lib-d-ts.problem.ts similarity index 100% rename from src/065-four-spaces-of-typescript-declarations/170-lib-dom-d-ts.problem.ts rename to src/065-four-spaces-of-typescript-declarations/170-lib-d-ts.problem.ts diff --git a/src/065-four-spaces-of-typescript-declarations/170-lib-dom-d-ts.solution.ts b/src/065-four-spaces-of-typescript-declarations/170-lib-d-ts.solution.ts similarity index 100% rename from src/065-four-spaces-of-typescript-declarations/170-lib-dom-d-ts.solution.ts rename to src/065-four-spaces-of-typescript-declarations/170-lib-d-ts.solution.ts diff --git a/src/065-four-spaces-of-typescript-declarations/171-third-party-types.problem.ts b/src/065-four-spaces-of-typescript-declarations/171-using-target-to-change-lib-d-ts.problem.ts similarity index 100% rename from src/065-four-spaces-of-typescript-declarations/171-third-party-types.problem.ts rename to src/065-four-spaces-of-typescript-declarations/171-using-target-to-change-lib-d-ts.problem.ts diff --git a/src/065-four-spaces-of-typescript-declarations/171-third-party-types.solution.ts b/src/065-four-spaces-of-typescript-declarations/171-using-target-to-change-lib-d-ts.solution.ts similarity index 100% rename from src/065-four-spaces-of-typescript-declarations/171-third-party-types.solution.ts rename to src/065-four-spaces-of-typescript-declarations/171-using-target-to-change-lib-d-ts.solution.ts diff --git a/src/065-four-spaces-of-typescript-declarations/172-type-roots-in-tsconfig.problem.ts b/src/065-four-spaces-of-typescript-declarations/172-lib-dom-d-ts.problem.ts similarity index 100% rename from src/065-four-spaces-of-typescript-declarations/172-type-roots-in-tsconfig.problem.ts rename to src/065-four-spaces-of-typescript-declarations/172-lib-dom-d-ts.problem.ts diff --git a/src/065-four-spaces-of-typescript-declarations/172-type-roots-in-tsconfig.solution.ts b/src/065-four-spaces-of-typescript-declarations/172-lib-dom-d-ts.solution.ts similarity index 100% rename from src/065-four-spaces-of-typescript-declarations/172-type-roots-in-tsconfig.solution.ts rename to src/065-four-spaces-of-typescript-declarations/172-lib-dom-d-ts.solution.ts diff --git a/src/065-four-spaces-of-typescript-declarations/173-types-that-ship-with-libraries.problem.ts b/src/065-four-spaces-of-typescript-declarations/173-third-party-types.problem.ts similarity index 100% rename from src/065-four-spaces-of-typescript-declarations/173-types-that-ship-with-libraries.problem.ts rename to src/065-four-spaces-of-typescript-declarations/173-third-party-types.problem.ts diff --git a/src/065-four-spaces-of-typescript-declarations/173-types-that-ship-with-libraries.solution.ts b/src/065-four-spaces-of-typescript-declarations/173-third-party-types.solution.ts similarity index 100% rename from src/065-four-spaces-of-typescript-declarations/173-types-that-ship-with-libraries.solution.ts rename to src/065-four-spaces-of-typescript-declarations/173-third-party-types.solution.ts diff --git a/src/075-designing-your-types/174-domain-modelling-in-typescript.problem.ts b/src/065-four-spaces-of-typescript-declarations/174-type-roots-in-tsconfig.problem.ts similarity index 100% rename from src/075-designing-your-types/174-domain-modelling-in-typescript.problem.ts rename to src/065-four-spaces-of-typescript-declarations/174-type-roots-in-tsconfig.problem.ts diff --git a/src/075-designing-your-types/174-domain-modelling-in-typescript.solution.ts b/src/065-four-spaces-of-typescript-declarations/174-type-roots-in-tsconfig.solution.ts similarity index 100% rename from src/075-designing-your-types/174-domain-modelling-in-typescript.solution.ts rename to src/065-four-spaces-of-typescript-declarations/174-type-roots-in-tsconfig.solution.ts diff --git a/src/075-designing-your-types/175-intro-to-helper-types.problem.ts b/src/065-four-spaces-of-typescript-declarations/175-types-that-ship-with-libraries.problem.ts similarity index 100% rename from src/075-designing-your-types/175-intro-to-helper-types.problem.ts rename to src/065-four-spaces-of-typescript-declarations/175-types-that-ship-with-libraries.problem.ts diff --git a/src/075-designing-your-types/175-intro-to-helper-types.solution.ts b/src/065-four-spaces-of-typescript-declarations/175-types-that-ship-with-libraries.solution.ts similarity index 100% rename from src/075-designing-your-types/175-intro-to-helper-types.solution.ts rename to src/065-four-spaces-of-typescript-declarations/175-types-that-ship-with-libraries.solution.ts diff --git a/src/075-designing-your-types/176-multiple-type-parameters.problem.ts b/src/075-designing-your-types/176-domain-modelling-in-typescript.problem.ts similarity index 100% rename from src/075-designing-your-types/176-multiple-type-parameters.problem.ts rename to src/075-designing-your-types/176-domain-modelling-in-typescript.problem.ts diff --git a/src/075-designing-your-types/176-multiple-type-parameters.solution.ts b/src/075-designing-your-types/176-domain-modelling-in-typescript.solution.ts similarity index 100% rename from src/075-designing-your-types/176-multiple-type-parameters.solution.ts rename to src/075-designing-your-types/176-domain-modelling-in-typescript.solution.ts diff --git a/src/075-designing-your-types/177-default-type-parameters.problem.ts b/src/075-designing-your-types/177-intro-to-helper-types.problem.ts similarity index 100% rename from src/075-designing-your-types/177-default-type-parameters.problem.ts rename to src/075-designing-your-types/177-intro-to-helper-types.problem.ts diff --git a/src/075-designing-your-types/177-default-type-parameters.solution.ts b/src/075-designing-your-types/177-intro-to-helper-types.solution.ts similarity index 100% rename from src/075-designing-your-types/177-default-type-parameters.solution.ts rename to src/075-designing-your-types/177-intro-to-helper-types.solution.ts diff --git a/src/075-designing-your-types/178-type-helper-constraints.problem.ts b/src/075-designing-your-types/178-multiple-type-parameters.problem.ts similarity index 100% rename from src/075-designing-your-types/178-type-helper-constraints.problem.ts rename to src/075-designing-your-types/178-multiple-type-parameters.problem.ts diff --git a/src/075-designing-your-types/178-type-helper-constraints.solution.ts b/src/075-designing-your-types/178-multiple-type-parameters.solution.ts similarity index 100% rename from src/075-designing-your-types/178-type-helper-constraints.solution.ts rename to src/075-designing-your-types/178-multiple-type-parameters.solution.ts diff --git a/src/075-designing-your-types/179-tighter-version-of-omit.problem.ts b/src/075-designing-your-types/179-default-type-parameters.problem.ts similarity index 100% rename from src/075-designing-your-types/179-tighter-version-of-omit.problem.ts rename to src/075-designing-your-types/179-default-type-parameters.problem.ts diff --git a/src/075-designing-your-types/179-tighter-version-of-omit.solution.ts b/src/075-designing-your-types/179-default-type-parameters.solution.ts similarity index 100% rename from src/075-designing-your-types/179-tighter-version-of-omit.solution.ts rename to src/075-designing-your-types/179-default-type-parameters.solution.ts diff --git a/src/075-designing-your-types/180-template-literal-types.problem.ts b/src/075-designing-your-types/180-type-helper-constraints.problem.ts similarity index 100% rename from src/075-designing-your-types/180-template-literal-types.problem.ts rename to src/075-designing-your-types/180-type-helper-constraints.problem.ts diff --git a/src/075-designing-your-types/180-template-literal-types.solution.ts b/src/075-designing-your-types/180-type-helper-constraints.solution.ts similarity index 100% rename from src/075-designing-your-types/180-template-literal-types.solution.ts rename to src/075-designing-your-types/180-type-helper-constraints.solution.ts diff --git a/src/075-designing-your-types/181-passing-unions-to-template-literal-types.problem.ts b/src/075-designing-your-types/181-tighter-version-of-omit.problem.ts similarity index 100% rename from src/075-designing-your-types/181-passing-unions-to-template-literal-types.problem.ts rename to src/075-designing-your-types/181-tighter-version-of-omit.problem.ts diff --git a/src/075-designing-your-types/181-passing-unions-to-template-literal-types.solution.ts b/src/075-designing-your-types/181-tighter-version-of-omit.solution.ts similarity index 100% rename from src/075-designing-your-types/181-passing-unions-to-template-literal-types.solution.ts rename to src/075-designing-your-types/181-tighter-version-of-omit.solution.ts diff --git a/src/075-designing-your-types/182-mapped-types.problem.ts b/src/075-designing-your-types/182-template-literal-types.problem.ts similarity index 100% rename from src/075-designing-your-types/182-mapped-types.problem.ts rename to src/075-designing-your-types/182-template-literal-types.problem.ts diff --git a/src/075-designing-your-types/182-mapped-types.solution.ts b/src/075-designing-your-types/182-template-literal-types.solution.ts similarity index 100% rename from src/075-designing-your-types/182-mapped-types.solution.ts rename to src/075-designing-your-types/182-template-literal-types.solution.ts diff --git a/src/075-designing-your-types/183-as-in-mapped-types.problem.ts b/src/075-designing-your-types/183-passing-unions-to-template-literal-types.problem.ts similarity index 100% rename from src/075-designing-your-types/183-as-in-mapped-types.problem.ts rename to src/075-designing-your-types/183-passing-unions-to-template-literal-types.problem.ts diff --git a/src/075-designing-your-types/183-as-in-mapped-types.solution.ts b/src/075-designing-your-types/183-passing-unions-to-template-literal-types.solution.ts similarity index 100% rename from src/075-designing-your-types/183-as-in-mapped-types.solution.ts rename to src/075-designing-your-types/183-passing-unions-to-template-literal-types.solution.ts diff --git a/src/080-configuring-typescript/184-introduction-to-tsconfig.problem.ts b/src/075-designing-your-types/184-mapped-types.problem.ts similarity index 100% rename from src/080-configuring-typescript/184-introduction-to-tsconfig.problem.ts rename to src/075-designing-your-types/184-mapped-types.problem.ts diff --git a/src/080-configuring-typescript/184-introduction-to-tsconfig.solution.ts b/src/075-designing-your-types/184-mapped-types.solution.ts similarity index 100% rename from src/080-configuring-typescript/184-introduction-to-tsconfig.solution.ts rename to src/075-designing-your-types/184-mapped-types.solution.ts diff --git a/src/080-configuring-typescript/185-tsconfig-bases.problem.ts b/src/075-designing-your-types/185-as-in-mapped-types.problem.ts similarity index 100% rename from src/080-configuring-typescript/185-tsconfig-bases.problem.ts rename to src/075-designing-your-types/185-as-in-mapped-types.problem.ts diff --git a/src/080-configuring-typescript/185-tsconfig-bases.solution.ts b/src/075-designing-your-types/185-as-in-mapped-types.solution.ts similarity index 100% rename from src/080-configuring-typescript/185-tsconfig-bases.solution.ts rename to src/075-designing-your-types/185-as-in-mapped-types.solution.ts diff --git a/src/080-configuring-typescript/186-multiple-tsconfig-json-files.problem.ts b/src/080-configuring-typescript/186-introduction-to-tsconfig.problem.ts similarity index 100% rename from src/080-configuring-typescript/186-multiple-tsconfig-json-files.problem.ts rename to src/080-configuring-typescript/186-introduction-to-tsconfig.problem.ts diff --git a/src/080-configuring-typescript/186-multiple-tsconfig-json-files.solution.ts b/src/080-configuring-typescript/186-introduction-to-tsconfig.solution.ts similarity index 100% rename from src/080-configuring-typescript/186-multiple-tsconfig-json-files.solution.ts rename to src/080-configuring-typescript/186-introduction-to-tsconfig.solution.ts diff --git a/src/080-configuring-typescript/187-extending-from-other-tsconfig-json-files.problem.ts b/src/080-configuring-typescript/187-tsconfig-bases.problem.ts similarity index 100% rename from src/080-configuring-typescript/187-extending-from-other-tsconfig-json-files.problem.ts rename to src/080-configuring-typescript/187-tsconfig-bases.problem.ts diff --git a/src/080-configuring-typescript/187-extending-from-other-tsconfig-json-files.solution.ts b/src/080-configuring-typescript/187-tsconfig-bases.solution.ts similarity index 100% rename from src/080-configuring-typescript/187-extending-from-other-tsconfig-json-files.solution.ts rename to src/080-configuring-typescript/187-tsconfig-bases.solution.ts diff --git a/src/080-configuring-typescript/188-project-references.problem.ts b/src/080-configuring-typescript/188-multiple-tsconfig-json-files.problem.ts similarity index 100% rename from src/080-configuring-typescript/188-project-references.problem.ts rename to src/080-configuring-typescript/188-multiple-tsconfig-json-files.problem.ts diff --git a/src/080-configuring-typescript/188-project-references.solution.ts b/src/080-configuring-typescript/188-multiple-tsconfig-json-files.solution.ts similarity index 100% rename from src/080-configuring-typescript/188-project-references.solution.ts rename to src/080-configuring-typescript/188-multiple-tsconfig-json-files.solution.ts diff --git a/src/080-configuring-typescript/189-jsx.problem.ts b/src/080-configuring-typescript/189-extending-from-other-tsconfig-json-files.problem.ts similarity index 100% rename from src/080-configuring-typescript/189-jsx.problem.ts rename to src/080-configuring-typescript/189-extending-from-other-tsconfig-json-files.problem.ts diff --git a/src/080-configuring-typescript/189-jsx.solution.ts b/src/080-configuring-typescript/189-extending-from-other-tsconfig-json-files.solution.ts similarity index 100% rename from src/080-configuring-typescript/189-jsx.solution.ts rename to src/080-configuring-typescript/189-extending-from-other-tsconfig-json-files.solution.ts diff --git a/src/080-configuring-typescript/190-rules-that-make-up-strict-mode.problem.ts b/src/080-configuring-typescript/190-project-references.problem.ts similarity index 100% rename from src/080-configuring-typescript/190-rules-that-make-up-strict-mode.problem.ts rename to src/080-configuring-typescript/190-project-references.problem.ts diff --git a/src/080-configuring-typescript/190-rules-that-make-up-strict-mode.solution.ts b/src/080-configuring-typescript/190-project-references.solution.ts similarity index 100% rename from src/080-configuring-typescript/190-rules-that-make-up-strict-mode.solution.ts rename to src/080-configuring-typescript/190-project-references.solution.ts diff --git a/src/080-configuring-typescript/191-no-unchecked-indexed-access.problem.ts b/src/080-configuring-typescript/191-jsx.problem.ts similarity index 100% rename from src/080-configuring-typescript/191-no-unchecked-indexed-access.problem.ts rename to src/080-configuring-typescript/191-jsx.problem.ts diff --git a/src/080-configuring-typescript/191-no-unchecked-indexed-access.solution.ts b/src/080-configuring-typescript/191-jsx.solution.ts similarity index 100% rename from src/080-configuring-typescript/191-no-unchecked-indexed-access.solution.ts rename to src/080-configuring-typescript/191-jsx.solution.ts diff --git a/src/080-configuring-typescript/192-creating-declaration-files-and-declaration-maps.problem.ts b/src/080-configuring-typescript/192-rules-that-make-up-strict-mode.problem.ts similarity index 100% rename from src/080-configuring-typescript/192-creating-declaration-files-and-declaration-maps.problem.ts rename to src/080-configuring-typescript/192-rules-that-make-up-strict-mode.problem.ts diff --git a/src/080-configuring-typescript/192-creating-declaration-files-and-declaration-maps.solution.ts b/src/080-configuring-typescript/192-rules-that-make-up-strict-mode.solution.ts similarity index 100% rename from src/080-configuring-typescript/192-creating-declaration-files-and-declaration-maps.solution.ts rename to src/080-configuring-typescript/192-rules-that-make-up-strict-mode.solution.ts diff --git a/src/080-configuring-typescript/193-setting-up-types-for-node.problem.ts b/src/080-configuring-typescript/193-no-unchecked-indexed-access.problem.ts similarity index 100% rename from src/080-configuring-typescript/193-setting-up-types-for-node.problem.ts rename to src/080-configuring-typescript/193-no-unchecked-indexed-access.problem.ts diff --git a/src/080-configuring-typescript/193-setting-up-types-for-node.solution.ts b/src/080-configuring-typescript/193-no-unchecked-indexed-access.solution.ts similarity index 100% rename from src/080-configuring-typescript/193-setting-up-types-for-node.solution.ts rename to src/080-configuring-typescript/193-no-unchecked-indexed-access.solution.ts diff --git a/src/080-configuring-typescript/194-set-up-types-for-simple-scripts.problem.ts b/src/080-configuring-typescript/194-creating-declaration-files-and-declaration-maps.problem.ts similarity index 100% rename from src/080-configuring-typescript/194-set-up-types-for-simple-scripts.problem.ts rename to src/080-configuring-typescript/194-creating-declaration-files-and-declaration-maps.problem.ts diff --git a/src/080-configuring-typescript/194-set-up-types-for-simple-scripts.solution.ts b/src/080-configuring-typescript/194-creating-declaration-files-and-declaration-maps.solution.ts similarity index 100% rename from src/080-configuring-typescript/194-set-up-types-for-simple-scripts.solution.ts rename to src/080-configuring-typescript/194-creating-declaration-files-and-declaration-maps.solution.ts diff --git a/src/080-configuring-typescript/195-set-up-types-for-test-files.problem.ts b/src/080-configuring-typescript/195-setting-up-types-for-node.problem.ts similarity index 100% rename from src/080-configuring-typescript/195-set-up-types-for-test-files.problem.ts rename to src/080-configuring-typescript/195-setting-up-types-for-node.problem.ts diff --git a/src/080-configuring-typescript/195-set-up-types-for-test-files.solution.ts b/src/080-configuring-typescript/195-setting-up-types-for-node.solution.ts similarity index 100% rename from src/080-configuring-typescript/195-set-up-types-for-test-files.solution.ts rename to src/080-configuring-typescript/195-setting-up-types-for-node.solution.ts diff --git a/src/080-configuring-typescript/196-set-up-types-for-bundled-web-app.problem.ts b/src/080-configuring-typescript/196-set-up-types-for-simple-scripts.problem.ts similarity index 100% rename from src/080-configuring-typescript/196-set-up-types-for-bundled-web-app.problem.ts rename to src/080-configuring-typescript/196-set-up-types-for-simple-scripts.problem.ts diff --git a/src/080-configuring-typescript/196-set-up-types-for-bundled-web-app.solution.ts b/src/080-configuring-typescript/196-set-up-types-for-simple-scripts.solution.ts similarity index 100% rename from src/080-configuring-typescript/196-set-up-types-for-bundled-web-app.solution.ts rename to src/080-configuring-typescript/196-set-up-types-for-simple-scripts.solution.ts diff --git a/src/085-the-utils-folder/197-intro-to-the-utils-folder.problem.ts b/src/080-configuring-typescript/197-set-up-types-for-test-files.problem.ts similarity index 100% rename from src/085-the-utils-folder/197-intro-to-the-utils-folder.problem.ts rename to src/080-configuring-typescript/197-set-up-types-for-test-files.problem.ts diff --git a/src/085-the-utils-folder/197-intro-to-the-utils-folder.solution.ts b/src/080-configuring-typescript/197-set-up-types-for-test-files.solution.ts similarity index 100% rename from src/085-the-utils-folder/197-intro-to-the-utils-folder.solution.ts rename to src/080-configuring-typescript/197-set-up-types-for-test-files.solution.ts diff --git a/src/085-the-utils-folder/198-generic-functions-without-inference.problem.ts b/src/080-configuring-typescript/198-set-up-types-for-bundled-web-app.problem.ts similarity index 100% rename from src/085-the-utils-folder/198-generic-functions-without-inference.problem.ts rename to src/080-configuring-typescript/198-set-up-types-for-bundled-web-app.problem.ts diff --git a/src/085-the-utils-folder/198-generic-functions-without-inference.solution.ts b/src/080-configuring-typescript/198-set-up-types-for-bundled-web-app.solution.ts similarity index 100% rename from src/085-the-utils-folder/198-generic-functions-without-inference.solution.ts rename to src/080-configuring-typescript/198-set-up-types-for-bundled-web-app.solution.ts diff --git a/src/085-the-utils-folder/199-type-parameter-defaults-in-generic-functions.problem.ts b/src/085-the-utils-folder/199-intro-to-the-utils-folder.problem.ts similarity index 100% rename from src/085-the-utils-folder/199-type-parameter-defaults-in-generic-functions.problem.ts rename to src/085-the-utils-folder/199-intro-to-the-utils-folder.problem.ts diff --git a/src/085-the-utils-folder/199-type-parameter-defaults-in-generic-functions.solution.ts b/src/085-the-utils-folder/199-intro-to-the-utils-folder.solution.ts similarity index 100% rename from src/085-the-utils-folder/199-type-parameter-defaults-in-generic-functions.solution.ts rename to src/085-the-utils-folder/199-intro-to-the-utils-folder.solution.ts diff --git a/src/085-the-utils-folder/200-type-parameter-constraints-with-generic-functions.problem.ts b/src/085-the-utils-folder/200-generic-functions-without-inference.problem.ts similarity index 100% rename from src/085-the-utils-folder/200-type-parameter-constraints-with-generic-functions.problem.ts rename to src/085-the-utils-folder/200-generic-functions-without-inference.problem.ts diff --git a/src/085-the-utils-folder/200-type-parameter-constraints-with-generic-functions.solution.ts b/src/085-the-utils-folder/200-generic-functions-without-inference.solution.ts similarity index 100% rename from src/085-the-utils-folder/200-type-parameter-constraints-with-generic-functions.solution.ts rename to src/085-the-utils-folder/200-generic-functions-without-inference.solution.ts diff --git a/src/085-the-utils-folder/201-generic-functions-with-inference.problem.ts b/src/085-the-utils-folder/201-type-parameter-defaults-in-generic-functions.problem.ts similarity index 100% rename from src/085-the-utils-folder/201-generic-functions-with-inference.problem.ts rename to src/085-the-utils-folder/201-type-parameter-defaults-in-generic-functions.problem.ts diff --git a/src/085-the-utils-folder/201-generic-functions-with-inference.solution.ts b/src/085-the-utils-folder/201-type-parameter-defaults-in-generic-functions.solution.ts similarity index 100% rename from src/085-the-utils-folder/201-generic-functions-with-inference.solution.ts rename to src/085-the-utils-folder/201-type-parameter-defaults-in-generic-functions.solution.ts diff --git a/src/085-the-utils-folder/202-multiple-type-arguments.problem.ts b/src/085-the-utils-folder/202-type-parameter-constraints-with-generic-functions.problem.ts similarity index 100% rename from src/085-the-utils-folder/202-multiple-type-arguments.problem.ts rename to src/085-the-utils-folder/202-type-parameter-constraints-with-generic-functions.problem.ts diff --git a/src/085-the-utils-folder/202-multiple-type-arguments.solution.ts b/src/085-the-utils-folder/202-type-parameter-constraints-with-generic-functions.solution.ts similarity index 100% rename from src/085-the-utils-folder/202-multiple-type-arguments.solution.ts rename to src/085-the-utils-folder/202-type-parameter-constraints-with-generic-functions.solution.ts diff --git a/src/085-the-utils-folder/203-create-group-by-function.problem.ts b/src/085-the-utils-folder/203-generic-functions-with-inference.problem.ts similarity index 100% rename from src/085-the-utils-folder/203-create-group-by-function.problem.ts rename to src/085-the-utils-folder/203-generic-functions-with-inference.problem.ts diff --git a/src/085-the-utils-folder/203-create-group-by-function.solution.ts b/src/085-the-utils-folder/203-generic-functions-with-inference.solution.ts similarity index 100% rename from src/085-the-utils-folder/203-create-group-by-function.solution.ts rename to src/085-the-utils-folder/203-generic-functions-with-inference.solution.ts diff --git a/src/085-the-utils-folder/204-type-predicates.problem.ts b/src/085-the-utils-folder/204-multiple-type-arguments.problem.ts similarity index 100% rename from src/085-the-utils-folder/204-type-predicates.problem.ts rename to src/085-the-utils-folder/204-multiple-type-arguments.problem.ts diff --git a/src/085-the-utils-folder/204-type-predicates.solution.ts b/src/085-the-utils-folder/204-multiple-type-arguments.solution.ts similarity index 100% rename from src/085-the-utils-folder/204-type-predicates.solution.ts rename to src/085-the-utils-folder/204-multiple-type-arguments.solution.ts diff --git a/src/085-the-utils-folder/205-assertion-functions.problem.ts b/src/085-the-utils-folder/205-create-group-by-function.problem.ts similarity index 100% rename from src/085-the-utils-folder/205-assertion-functions.problem.ts rename to src/085-the-utils-folder/205-create-group-by-function.problem.ts diff --git a/src/085-the-utils-folder/205-assertion-functions.solution.ts b/src/085-the-utils-folder/205-create-group-by-function.solution.ts similarity index 100% rename from src/085-the-utils-folder/205-assertion-functions.solution.ts rename to src/085-the-utils-folder/205-create-group-by-function.solution.ts diff --git a/src/090-the-style-guide/206-setting-up-eslint.problem.ts b/src/085-the-utils-folder/206-type-predicates.problem.ts similarity index 100% rename from src/090-the-style-guide/206-setting-up-eslint.problem.ts rename to src/085-the-utils-folder/206-type-predicates.problem.ts diff --git a/src/090-the-style-guide/206-setting-up-eslint.solution.ts b/src/085-the-utils-folder/206-type-predicates.solution.ts similarity index 100% rename from src/090-the-style-guide/206-setting-up-eslint.solution.ts rename to src/085-the-utils-folder/206-type-predicates.solution.ts diff --git a/src/090-the-style-guide/207-hungarian-notation.problem.ts b/src/085-the-utils-folder/207-assertion-functions.problem.ts similarity index 100% rename from src/090-the-style-guide/207-hungarian-notation.problem.ts rename to src/085-the-utils-folder/207-assertion-functions.problem.ts diff --git a/src/090-the-style-guide/207-hungarian-notation.solution.ts b/src/085-the-utils-folder/207-assertion-functions.solution.ts similarity index 100% rename from src/090-the-style-guide/207-hungarian-notation.solution.ts rename to src/085-the-utils-folder/207-assertion-functions.solution.ts diff --git a/src/090-the-style-guide/208-where-to-put-your-types.problem.ts b/src/085-the-utils-folder/208-function-overloads.problem.ts similarity index 100% rename from src/090-the-style-guide/208-where-to-put-your-types.problem.ts rename to src/085-the-utils-folder/208-function-overloads.problem.ts diff --git a/src/090-the-style-guide/208-where-to-put-your-types.solution.ts b/src/085-the-utils-folder/208-function-overloads.solution.ts similarity index 100% rename from src/090-the-style-guide/208-where-to-put-your-types.solution.ts rename to src/085-the-utils-folder/208-function-overloads.solution.ts diff --git a/src/090-the-style-guide/209-colocation-of-types.problem.ts b/src/090-the-style-guide/209-setting-up-eslint.problem.ts similarity index 100% rename from src/090-the-style-guide/209-colocation-of-types.problem.ts rename to src/090-the-style-guide/209-setting-up-eslint.problem.ts diff --git a/src/090-the-style-guide/209-colocation-of-types.solution.ts b/src/090-the-style-guide/209-setting-up-eslint.solution.ts similarity index 100% rename from src/090-the-style-guide/209-colocation-of-types.solution.ts rename to src/090-the-style-guide/209-setting-up-eslint.solution.ts diff --git a/src/090-the-style-guide/210-explicit-any-rule-or-not.problem.ts b/src/090-the-style-guide/210-hungarian-notation.problem.ts similarity index 100% rename from src/090-the-style-guide/210-explicit-any-rule-or-not.problem.ts rename to src/090-the-style-guide/210-hungarian-notation.problem.ts diff --git a/src/090-the-style-guide/210-explicit-any-rule-or-not.solution.ts b/src/090-the-style-guide/210-hungarian-notation.solution.ts similarity index 100% rename from src/090-the-style-guide/210-explicit-any-rule-or-not.solution.ts rename to src/090-the-style-guide/210-hungarian-notation.solution.ts diff --git a/src/090-the-style-guide/211-explicit-return-types-or-not.problem.ts b/src/090-the-style-guide/211-where-to-put-your-types.problem.ts similarity index 100% rename from src/090-the-style-guide/211-explicit-return-types-or-not.problem.ts rename to src/090-the-style-guide/211-where-to-put-your-types.problem.ts diff --git a/src/090-the-style-guide/211-explicit-return-types-or-not.solution.ts b/src/090-the-style-guide/211-where-to-put-your-types.solution.ts similarity index 100% rename from src/090-the-style-guide/211-explicit-return-types-or-not.solution.ts rename to src/090-the-style-guide/211-where-to-put-your-types.solution.ts diff --git a/src/090-the-style-guide/212-any-vs-ts-ignore-vs-ts-expect-error.problem.ts b/src/090-the-style-guide/212-colocation-of-types.problem.ts similarity index 100% rename from src/090-the-style-guide/212-any-vs-ts-ignore-vs-ts-expect-error.problem.ts rename to src/090-the-style-guide/212-colocation-of-types.problem.ts diff --git a/src/090-the-style-guide/212-any-vs-ts-ignore-vs-ts-expect-error.solution.ts b/src/090-the-style-guide/212-colocation-of-types.solution.ts similarity index 100% rename from src/090-the-style-guide/212-any-vs-ts-ignore-vs-ts-expect-error.solution.ts rename to src/090-the-style-guide/212-colocation-of-types.solution.ts diff --git a/src/090-the-style-guide/213-result-type.problem.ts b/src/090-the-style-guide/213-explicit-any-rule-or-not.problem.ts similarity index 100% rename from src/090-the-style-guide/213-result-type.problem.ts rename to src/090-the-style-guide/213-explicit-any-rule-or-not.problem.ts diff --git a/src/090-the-style-guide/213-result-type.solution.ts b/src/090-the-style-guide/213-explicit-any-rule-or-not.solution.ts similarity index 100% rename from src/090-the-style-guide/213-result-type.solution.ts rename to src/090-the-style-guide/213-explicit-any-rule-or-not.solution.ts diff --git a/src/095-migrating-from-javascript/214-strict-file-by-file-vs-ramp-up-strictness.problem.ts b/src/090-the-style-guide/214-explicit-return-types-or-not.problem.ts similarity index 100% rename from src/095-migrating-from-javascript/214-strict-file-by-file-vs-ramp-up-strictness.problem.ts rename to src/090-the-style-guide/214-explicit-return-types-or-not.problem.ts diff --git a/src/095-migrating-from-javascript/214-strict-file-by-file-vs-ramp-up-strictness.solution.ts b/src/090-the-style-guide/214-explicit-return-types-or-not.solution.ts similarity index 100% rename from src/095-migrating-from-javascript/214-strict-file-by-file-vs-ramp-up-strictness.solution.ts rename to src/090-the-style-guide/214-explicit-return-types-or-not.solution.ts diff --git a/src/095-migrating-from-javascript/215-dependencies-first.problem.ts b/src/090-the-style-guide/215-any-vs-ts-ignore-vs-ts-expect-error.problem.ts similarity index 100% rename from src/095-migrating-from-javascript/215-dependencies-first.problem.ts rename to src/090-the-style-guide/215-any-vs-ts-ignore-vs-ts-expect-error.problem.ts diff --git a/src/095-migrating-from-javascript/215-dependencies-first.solution.ts b/src/090-the-style-guide/215-any-vs-ts-ignore-vs-ts-expect-error.solution.ts similarity index 100% rename from src/095-migrating-from-javascript/215-dependencies-first.solution.ts rename to src/090-the-style-guide/215-any-vs-ts-ignore-vs-ts-expect-error.solution.ts diff --git a/src/095-migrating-from-javascript/216-madge.problem.ts b/src/090-the-style-guide/216-result-type.problem.ts similarity index 100% rename from src/095-migrating-from-javascript/216-madge.problem.ts rename to src/090-the-style-guide/216-result-type.problem.ts diff --git a/src/095-migrating-from-javascript/216-madge.solution.ts b/src/090-the-style-guide/216-result-type.solution.ts similarity index 100% rename from src/095-migrating-from-javascript/216-madge.solution.ts rename to src/090-the-style-guide/216-result-type.solution.ts diff --git a/src/090-the-style-guide/217-dont-declare-type-and-value-with-the-same-name.problem.ts b/src/090-the-style-guide/217-dont-declare-type-and-value-with-the-same-name.problem.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/090-the-style-guide/217-dont-declare-type-and-value-with-the-same-name.solution.ts b/src/090-the-style-guide/217-dont-declare-type-and-value-with-the-same-name.solution.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/090-the-style-guide/218-types-vs-interfaces.problem.ts b/src/090-the-style-guide/218-types-vs-interfaces.problem.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/090-the-style-guide/218-types-vs-interfaces.solution.ts b/src/090-the-style-guide/218-types-vs-interfaces.solution.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/095-migrating-from-javascript/219-strict-file-by-file-vs-ramp-up-strictness.problem.ts b/src/095-migrating-from-javascript/219-strict-file-by-file-vs-ramp-up-strictness.problem.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/095-migrating-from-javascript/219-strict-file-by-file-vs-ramp-up-strictness.solution.ts b/src/095-migrating-from-javascript/219-strict-file-by-file-vs-ramp-up-strictness.solution.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/095-migrating-from-javascript/220-dependencies-first.problem.ts b/src/095-migrating-from-javascript/220-dependencies-first.problem.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/095-migrating-from-javascript/220-dependencies-first.solution.ts b/src/095-migrating-from-javascript/220-dependencies-first.solution.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/095-migrating-from-javascript/221-madge.problem.ts b/src/095-migrating-from-javascript/221-madge.problem.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/095-migrating-from-javascript/221-madge.solution.ts b/src/095-migrating-from-javascript/221-madge.solution.ts new file mode 100644 index 0000000..e69de29