From fa199debfc33dae4a7263589f887149350b6838d Mon Sep 17 00:00:00 2001 From: Matt Pocock Date: Tue, 29 Aug 2023 14:12:43 +0100 Subject: [PATCH] 2023-08-29T13:12:43.223Z --- .../036-typing-array-reduce.problem.ts} | 0 .../036-typing-array-reduce.solution.ts} | 0 ...c-functions.problem.ts => 037-type-async-functions.problem.ts} | 0 ...functions.solution.ts => 037-type-async-functions.solution.ts} | 0 ...ver.explainer.ts => 038-understand-the-ts-server.explainer.ts} | 0 ...understand-how-to-hover-a-variable-to-see-its-type.problem.ts} | 0 ...nderstand-how-to-hover-a-variable-to-see-its-type.solution.ts} | 0 ...em.ts => 040-hovering-intersections-and-interfaces.problem.ts} | 0 ...oblem.ts => 041-autocomplete-for-object-properties.problem.ts} | 0 ...tion.ts => 041-autocomplete-for-object-properties.solution.ts} | 0 ...problem.ts => 042-autocomplete-for-string-literals.problem.ts} | 0 ...lution.ts => 042-autocomplete-for-string-literals.solution.ts} | 0 ...s-of-errors.problem.ts => 043-autocomplete-for-jsx.problem.ts} | 0 ...of-errors.solution.ts => 043-autocomplete-for-jsx.solution.ts} | 0 ...o-to-definition.problem.ts => 044-basics-of-errors.problem.ts} | 0 ...to-definition.solution.ts => 044-basics-of-errors.solution.ts} | 0 ...-all-references.problem.ts => 045-go-to-definition.problem.ts} | 0 ...ll-references.solution.ts => 045-go-to-definition.solution.ts} | 0 ...ename-symbol.problem.ts => 046-find-all-references.problem.ts} | 0 ...ame-symbol.solution.ts => 046-find-all-references.solution.ts} | 0 ...-typescript-server.problem.ts => 047-rename-symbol.problem.ts} | 0 ...ypescript-server.solution.ts => 047-rename-symbol.solution.ts} | 0 .../048-resetting-the-typescript-server.problem.ts} | 0 .../048-resetting-the-typescript-server.solution.ts} | 0 ...to-unions.problem.ts => 049-introduction-to-unions.problem.ts} | 0 ...-unions.solution.ts => 049-introduction-to-unions.solution.ts} | 0 ...{049-literal-types.problem.ts => 050-literal-types.problem.ts} | 0 ...iteral-types.solution.1.ts => 050-literal-types.solution.1.ts} | 0 ...iteral-types.solution.2.ts => 050-literal-types.solution.2.ts} | 0 ...ombining-unions.problem.ts => 051-combining-unions.problem.ts} | 0 ...bining-unions.solution.ts => 051-combining-unions.solution.ts} | 0 ...on-be.explainer.ts => 052-how-big-can-a-union-be.explainer.ts} | 0 ...ypes.explainer.ts => 053-literals-vs-wider-types.explainer.ts} | 0 ...explainer.ts => 054-narrowing-unions-with-typeof.explainer.ts} | 0 ...nts.problem.ts => 055-narrowing-with-if-statements.problem.ts} | 0 ...lution.1.ts => 055-narrowing-with-if-statements.solution.1.ts} | 0 ...lution.2.ts => 055-narrowing-with-if-statements.solution.2.ts} | 0 ...lution.3.ts => 055-narrowing-with-if-statements.solution.3.ts} | 0 ...lution.4.ts => 055-narrowing-with-if-statements.solution.4.ts} | 0 ...lution.5.ts => 055-narrowing-with-if-statements.solution.5.ts} | 0 ...ainer.ts => 056-narrowing-with-boolean-wont-work.explainer.ts} | 0 ...narrow.problem.ts => 057-throwing-errors-to-narrow.problem.ts} | 0 ...rrow.solution.ts => 057-throwing-errors-to-narrow.solution.ts} | 0 ...lem.ts => 058-narrowing-with-instanceof-statements.problem.ts} | 0 ...on.ts => 058-narrowing-with-instanceof-statements.solution.ts} | 0 ...nts.problem.ts => 059-narrowing-with-in-statements.problem.ts} | 0 ...s.solution.ts => 059-narrowing-with-in-statements.solution.ts} | 0 ...lue.problem.ts => 060-narrowing-unknown-to-a-value.problem.ts} | 0 ...e.solution.ts => 060-narrowing-unknown-to-a-value.solution.ts} | 0 ...rnaries.problem.ts => 061-narrowing-with-ternaries.problem.ts} | 0 ...aries.solution.ts => 061-narrowing-with-ternaries.solution.ts} | 0 ...roblem.ts => 062-narrowing-with-nullish-coalescing.problem.ts} | 0 ...ution.ts => 062-narrowing-with-nullish-coalescing.solution.ts} | 0 .../063-evolving-any.problem.ts} | 0 .../063-evolving-any.solution.ts} | 0 .../064-evolving-any-arrays.problem.ts} | 0 .../064-evolving-any-arrays.solution.ts} | 0 ...ns.problem.ts => 065-intro-to-discriminated-unions.problem.ts} | 0 ....solution.ts => 065-intro-to-discriminated-unions.solution.ts} | 0 ...blem.ts => 066-destructuring-a-discriminated-union.problem.ts} | 0 ...ion.ts => 066-destructuring-a-discriminated-union.solution.ts} | 0 ...wing-a-discriminated-union-with-a-switch-statement.problem.ts} | 0 ...ing-a-discriminated-union-with-a-switch-statement.solution.ts} | 0 ...e.explainer.ts => 068-narrowing-with-switch-true.explainer.ts} | 0 ...blem.ts => 069-destructuring-a-discriminated-tuple.problem.ts} | 0 ...ion.ts => 069-destructuring-a-discriminated-tuple.solution.ts} | 0 ...-booleans.problem.ts => 070-discriminated-booleans.problem.ts} | 0 ...ooleans.solution.ts => 070-discriminated-booleans.solution.ts} | 0 .../071-adding-defaults-to-discriminated-union.problem.ts} | 0 .../071-adding-defaults-to-discriminated-union.solution.ts} | 0 ...roblem.ts => 072-extend-object-using-intersections.problem.ts} | 0 ...ution.ts => 072-extend-object-using-intersections.solution.ts} | 0 ...s.problem.ts => 073-extend-object-using-interfaces.problem.ts} | 0 ...tion.1.ts => 073-extend-object-using-interfaces.solution.1.ts} | 0 ...tion.2.ts => 073-extend-object-using-interfaces.solution.2.ts} | 0 ...074-compare-between-intersections-and-interfaces.explainer.ts} | 0 ...ndex-signatures.problem.ts => 075-index-signatures.problem.ts} | 0 ...ignatures.solution.1.ts => 075-index-signatures.solution.1.ts} | 0 ...ignatures.solution.2.ts => 075-index-signatures.solution.2.ts} | 0 ...ignatures.solution.3.ts => 075-index-signatures.solution.3.ts} | 0 ...ignatures.solution.4.ts => 075-index-signatures.solution.4.ts} | 0 ...oblem.ts => 076-index-signatures-with-defined-keys.problem.ts} | 0 ....1.ts => 076-index-signatures-with-defined-keys.solution.1.ts} | 0 ....2.ts => 076-index-signatures-with-defined-keys.solution.2.ts} | 0 .../077-record-type-with-union-as-keys.problem.ts} | 0 .../077-record-type-with-union-as-keys.solution.ts} | 0 ...roblem.ts => 078-declaration-merging-of-interfaces.problem.ts} | 0 ...ution.ts => 078-declaration-merging-of-interfaces.solution.ts} | 0 ...ick-type-helper.problem.ts => 079-pick-type-helper.problem.ts} | 0 ...pe-helper.solution.1.ts => 079-pick-type-helper.solution.1.ts} | 0 ...pe-helper.solution.2.ts => 079-pick-type-helper.solution.2.ts} | 0 ...problem.ts => 080-common-keys-of-unions-of-objects.problem.ts} | 0 ...lution.ts => 080-common-keys-of-unions-of-objects.solution.ts} | 0 ...mit-type-helper.problem.ts => 081-omit-type-helper.problem.ts} | 0 ...pe-helper.solution.1.ts => 081-omit-type-helper.solution.1.ts} | 0 ...pe-helper.solution.2.ts => 081-omit-type-helper.solution.2.ts} | 0 ...omit.explainer.ts => 082-no-autocomplete-on-omit.explainer.ts} | 0 ...ute.explainer.1.ts => 083-omit-cant-distribute.explainer.1.ts} | 0 ...ute.explainer.2.ts => 083-omit-cant-distribute.explainer.2.ts} | 0 ...problem.ts => 084-omit-or-pick-more-than-one-thing.problem.ts} | 0 ...on.1.ts => 084-omit-or-pick-more-than-one-thing.solution.1.ts} | 0 ...on.2.ts => 084-omit-or-pick-more-than-one-thing.solution.2.ts} | 0 ...-type-helper.problem.ts => 085-partial-type-helper.problem.ts} | 0 ...ype-helper.solution.ts => 085-partial-type-helper.solution.ts} | 0 ...-helper.explainer.ts => 086-required-type-helper.explainer.ts} | 0 ...t-freeze.problem.ts => 087-let-and-const-inference.problem.ts} | 0 ...freeze.solution.ts => 087-let-and-const-inference.solution.ts} | 0 ...arrays.problem.ts => 088-object-property-inference.problem.ts} | 0 ...rays.solution.ts => 088-object-property-inference.solution.ts} | 0 ...es.problem.ts => 089-narrowing-in-different-scopes.problem.ts} | 0 ...ution.1.ts => 089-narrowing-in-different-scopes.solution.1.ts} | 0 ...ution.2.ts => 089-narrowing-in-different-scopes.solution.2.ts} | 0 ...rrays.problem.ts => 090-readonly-object-properties.problem.ts} | 0 ...ays.solution.ts => 090-readonly-object-properties.solution.ts} | 0 ...mutable-arrays.problem.ts => 091-intro-to-as-const.problem.ts} | 0 ...table-arrays.solution.ts => 091-intro-to-as-const.solution.ts} | 0 ...-tuple.problem.ts => 092-as-const-vs-object-freeze.problem.ts} | 0 ...uple.solution.ts => 092-as-const-vs-object-freeze.solution.ts} | 0 ...erals-in-objects.problem.ts => 093-readonly-arrays.problem.ts} | 0 ...als-in-objects.solution.ts => 093-readonly-arrays.solution.ts} | 0 .../094-includes-on-readonly-arrays.problem.ts} | 0 .../094-includes-on-readonly-arrays.solution.ts} | 0 .../095-readonly-arrays-vs-mutable-arrays.problem.ts} | 0 .../095-readonly-arrays-vs-mutable-arrays.solution.ts} | 0 .../096-as-const-to-make-functions-infer-a-tuple.problem.ts} | 0 .../096-as-const-to-make-functions-infer-a-tuple.solution.ts} | 0 ...an-make-strings-infer-as-their-literals-in-objects.problem.ts} | 0 ...n-make-strings-infer-as-their-literals-in-objects.solution.ts} | 0 ...ss-properties.problem.ts => 098-understand-classes.problem.ts} | 0 ...-properties.solution.ts => 098-understand-classes.solution.ts} | 0 ...ds.problem.ts => 099-public-and-private-properties.problem.ts} | 0 ....solution.ts => 099-public-and-private-properties.solution.ts} | 0 ...00-decorators.problem.ts => 100-hash-in-javascript.problem.ts} | 0 ...-decorators.solution.ts => 100-hash-in-javascript.solution.ts} | 0 ...rfaces.problem.ts => 101-optional-class-properties.problem.ts} | 0 ...aces.solution.ts => 101-optional-class-properties.solution.ts} | 0 ...ctions.problem.ts => 102-readonly-class-properties.problem.ts} | 0 ...ions.solution.ts => 102-readonly-class-properties.solution.ts} | 0 ...-this-in-functions.problem.ts => 103-class-methods.problem.ts} | 0 ...his-in-functions.solution.ts => 103-class-methods.solution.ts} | 0 .../104-decorators.problem.ts} | 0 .../104-decorators.solution.ts} | 0 .../105-implementing-interfaces.problem.ts} | 0 .../105-implementing-interfaces.solution.ts} | 0 .../106-typing-this-in-functions.problem.ts} | 0 .../106-typing-this-in-functions.solution.ts} | 0 .../107-can-you-type-this-in-functions.problem.ts} | 0 .../107-can-you-type-this-in-functions.solution.ts} | 0 ...lues.problem.ts => 108-auto-assignation-in-classes.problem.ts} | 0 ...es.solution.ts => 108-auto-assignation-in-classes.solution.ts} | 0 ...aces-can-declaration-merge.problem.ts => 109-enums.problem.ts} | 0 ...es-can-declaration-merge.solution.ts => 109-enums.solution.ts} | 0 ...an-declaration-merge.problem.ts => 110-const-enums.problem.ts} | 0 ...-declaration-merge.solution.ts => 110-const-enums.solution.ts} | 0 ...ld-you-use-namespaces.problem.ts => 111-namespaces.problem.ts} | 0 ...-you-use-namespaces.solution.ts => 111-namespaces.solution.ts} | 0 .../112-namespaces-can-be-used-as-types-or-values.problem.ts} | 0 .../112-namespaces-can-be-used-as-types-or-values.solution.ts} | 0 .../113-namespaces-can-declaration-merge.problem.ts} | 0 .../113-namespaces-can-declaration-merge.solution.ts} | 0 ...interfaces-within-namespaces-can-declaration-merge.problem.ts} | 0 ...nterfaces-within-namespaces-can-declaration-merge.solution.ts} | 0 .../115-should-you-use-namespaces.problem.ts} | 0 .../115-should-you-use-namespaces.solution.ts} | 0 .../{116-satisfies.problem.ts => 116-any.problem.ts} | 0 .../{116-satisfies.solution.ts => 116-any.solution.ts} | 0 ...on-throws.problem.ts => 117-global-typings-use-any.problem.ts} | 0 ...-throws.solution.ts => 117-global-typings-use-any.solution.ts} | 0 ...roperties-warnings.problem.ts => 118-as-and-as-any.problem.ts} | 0 ...perties-warnings.solution.ts => 118-as-and-as-any.solution.ts} | 0 ...-and-object-entries.problem.ts => 119-limits-of-as.problem.ts} | 0 ...nd-object-entries.solution.ts => 119-limits-of-as.solution.ts} | 0 ...ural-vs-nominal-typing.problem.ts => 120-ts-ignore.problem.ts} | 0 ...al-vs-nominal-typing.solution.ts => 120-ts-ignore.solution.ts} | 0 ...tructural-typing.problem.ts => 121-ts-expect-error.problem.ts} | 0 ...uctural-typing.solution.ts => 121-ts-expect-error.solution.ts} | 0 ...22-unions-of-functions.problem.ts => 122-satisfies.problem.ts} | 0 ...-unions-of-functions.solution.ts => 122-satisfies.solution.ts} | 0 ...ect-type.problem.ts => 123-satisfies-with-as-const.problem.ts} | 0 ...t-type.solution.ts => 123-satisfies-with-as-const.solution.ts} | 0 .../124-annotating-errors-a-function-throws.problem.ts} | 0 .../124-annotating-errors-a-function-throws.solution.ts} | 0 .../125-excess-properties-warnings.problem.ts} | 0 .../125-excess-properties-warnings.solution.ts} | 0 .../126-object-keys-and-object-entries.problem.ts} | 0 .../126-object-keys-and-object-entries.solution.ts} | 0 .../127-structural-vs-nominal-typing.problem.ts} | 0 .../127-structural-vs-nominal-typing.solution.ts} | 0 .../128-how-enums-break-structural-typing.problem.ts} | 0 .../128-how-enums-break-structural-typing.solution.ts} | 0 .../129-unions-of-functions.problem.ts} | 0 .../129-unions-of-functions.solution.ts} | 0 .../130-empty-object-type.problem.ts} | 0 .../130-empty-object-type.solution.ts} | 0 ...exed-access-types.problem.ts => 131-typeof-keyword.problem.ts} | 0 ...ed-access-types.solution.ts => 131-typeof-keyword.solution.ts} | 0 ...problem.ts => 132-create-runtime-values-from-types.problem.ts} | 0 ...lution.ts => 132-create-runtime-values-from-types.solution.ts} | 0 ...> 133-classes-and-enums-cross-value-and-type-world.problem.ts} | 0 ... 133-classes-and-enums-cross-value-and-type-world.solution.ts} | 0 ...roblem.ts => 134-this-crosses-value-and-type-world.problem.ts} | 0 ...ution.ts => 134-this-crosses-value-and-type-world.solution.ts} | 0 ...om-an-as-const-array.problem.ts => 135-return-type.problem.ts} | 0 ...-an-as-const-array.solution.ts => 135-return-type.solution.ts} | 0 ...-as-const.problem.ts => 136-parameters-type-helper.problem.ts} | 0 ...s-const.solution.ts => 136-parameters-type-helper.solution.ts} | 0 ...meric-comparators-on-enums.problem.ts => 137-keyof.problem.ts} | 0 ...ric-comparators-on-enums.solution.ts => 137-keyof.solution.ts} | 0 .../138-indexed-access-types.problem.ts} | 0 .../138-indexed-access-types.solution.ts} | 0 .../139-pass-unions-to-indexed-access-types.problem.ts} | 0 .../139-pass-unions-to-indexed-access-types.solution.ts} | 0 .../140-pass-keyof-into-an-indexed-access-type.problem.ts} | 0 .../140-pass-keyof-into-an-indexed-access-type.solution.ts} | 0 .../141-create-an-enum-from-as-const-object.problem.ts} | 0 .../141-create-an-enum-from-as-const-object.solution.ts} | 0 .../142-create-a-union-from-an-as-const-array.problem.ts} | 0 .../142-create-a-union-from-an-as-const-array.solution.ts} | 0 .../143-should-i-use-enums-or-as-const.problem.ts} | 0 .../143-should-i-use-enums-or-as-const.solution.ts} | 0 .../144-using-numeric-comparators-on-enums.problem.ts} | 0 .../144-using-numeric-comparators-on-enums.solution.ts} | 0 ...ules-or-scripts.problem.ts => 145-module-or-script.problem.ts} | 0 ...es-or-scripts.solution.ts => 145-module-or-script.solution.ts} | 0 ...-js-files.problem.ts => 146-module-detection-force.problem.ts} | 0 ...s-files.solution.ts => 146-module-detection-force.solution.ts} | 0 ...claration-files.problem.ts => 147-isolated-modules.problem.ts} | 0 ...aration-files.solution.ts => 147-isolated-modules.solution.ts} | 0 ...8-resolve-json-module.problem.ts => 148-cjs-vs-esm.problem.ts} | 0 ...resolve-json-module.solution.ts => 148-cjs-vs-esm.solution.ts} | 0 ...em.ts => 149-module-resolution-bundler-or-nodenext.problem.ts} | 0 ...n.ts => 149-module-resolution-bundler-or-nodenext.solution.ts} | 0 .../150-declaration-files.problem.ts} | 0 .../150-declaration-files.solution.ts} | 0 .../151-skip-lib-check-true.problem.ts} | 0 .../151-skip-lib-check-true.solution.ts} | 0 .../152-declaration-files-can-be-modules-or-scripts.problem.ts} | 0 .../152-declaration-files-can-be-modules-or-scripts.solution.ts} | 0 ...153-declaration-files-can-be-used-to-type-js-files.problem.ts} | 0 ...53-declaration-files-can-be-used-to-type-js-files.solution.ts} | 0 .../154-should-you-use-declaration-files.problem.ts} | 0 .../154-should-you-use-declaration-files.solution.ts} | 0 .../155-resolve-json-module.problem.ts} | 0 .../155-resolve-json-module.solution.ts} | 0 .../156-json-d-ts-files.problem.ts} | 0 .../156-json-d-ts-files.solution.ts} | 0 ...roblem.ts => 157-ambient-context-and-declare-const.problem.ts} | 0 ...ution.ts => 157-ambient-context-and-declare-const.solution.ts} | 0 ...fying-process-env.problem.ts => 158-declare-global.problem.ts} | 0 ...ing-process-env.solution.ts => 158-declare-global.solution.ts} | 0 .../159-globals-are-tied-to-a-single-tsconfig.problem.ts} | 0 .../159-globals-are-tied-to-a-single-tsconfig.solution.ts} | 0 .../160-declare-global-or-declaration-file.problem.ts} | 0 .../160-declare-global-or-declaration-file.solution.ts} | 0 .../161-declare-module.problem.ts} | 0 .../161-declare-module.solution.ts} | 0 .../162-wildcard-in-declare-module.problem.ts} | 0 .../162-wildcard-in-declare-module.solution.ts} | 0 .../163-modifying-window.problem.ts} | 0 .../163-modifying-window.solution.ts} | 0 .../164-modifying-globalthis.problem.ts} | 0 .../164-modifying-globalthis.solution.ts} | 0 .../165-modifying-process-env.problem.ts} | 0 .../165-modifying-process-env.solution.ts} | 0 ...eclare-module-for-overriding-third-party-libraries.problem.ts} | 0 ...clare-module-for-overriding-third-party-libraries.solution.ts} | 0 .../167-lib-d-ts.problem.ts} | 0 .../167-lib-d-ts.solution.ts} | 0 .../168-using-target-to-change-lib-d-ts.problem.ts} | 0 .../168-using-target-to-change-lib-d-ts.solution.ts} | 0 .../169-lib-dom-d-ts.problem.ts} | 0 .../169-lib-dom-d-ts.solution.ts} | 0 .../170-third-party-types.problem.ts} | 0 .../170-third-party-types.solution.ts} | 0 .../171-type-roots-in-tsconfig.problem.ts} | 0 .../171-type-roots-in-tsconfig.solution.ts} | 0 .../172-types-that-ship-with-libraries.problem.ts} | 0 .../172-types-that-ship-with-libraries.solution.ts} | 0 ...s.problem.ts => 173-domain-modelling-in-typescript.problem.ts} | 0 ...solution.ts => 173-domain-modelling-in-typescript.solution.ts} | 0 .../174-intro-to-helper-types.problem.ts} | 0 .../174-intro-to-helper-types.solution.ts} | 0 .../175-multiple-type-parameters.problem.ts} | 0 .../175-multiple-type-parameters.solution.ts} | 0 .../176-default-type-parameters.problem.ts} | 0 .../176-default-type-parameters.solution.ts} | 0 .../177-type-helper-constraints.problem.ts} | 0 .../177-type-helper-constraints.solution.ts} | 0 .../178-tighter-version-of-omit.problem.ts} | 0 .../178-tighter-version-of-omit.solution.ts} | 0 .../179-template-literal-types.problem.ts} | 0 .../179-template-literal-types.solution.ts} | 0 .../180-passing-unions-to-template-literal-types.problem.ts} | 0 .../180-passing-unions-to-template-literal-types.solution.ts} | 0 .../181-mapped-types.problem.ts} | 0 .../181-mapped-types.solution.ts} | 0 .../182-as-in-mapped-types.problem.ts} | 0 .../182-as-in-mapped-types.solution.ts} | 0 ...or-node.problem.ts => 183-introduction-to-tsconfig.problem.ts} | 0 ...-node.solution.ts => 183-introduction-to-tsconfig.solution.ts} | 0 ...or-simple-scripts.problem.ts => 184-tsconfig-bases.problem.ts} | 0 ...-simple-scripts.solution.ts => 184-tsconfig-bases.solution.ts} | 0 ...les.problem.ts => 185-multiple-tsconfig-json-files.problem.ts} | 0 ...s.solution.ts => 185-multiple-tsconfig-json-files.solution.ts} | 0 ...ts => 186-extending-from-other-tsconfig-json-files.problem.ts} | 0 ...s => 186-extending-from-other-tsconfig-json-files.solution.ts} | 0 .../187-project-references.problem.ts} | 0 .../187-project-references.solution.ts} | 0 .../188-jsx.problem.ts} | 0 .../188-jsx.solution.ts} | 0 .../189-rules-that-make-up-strict-mode.problem.ts} | 0 .../189-rules-that-make-up-strict-mode.solution.ts} | 0 .../190-no-unchecked-indexed-access.problem.ts} | 0 .../190-no-unchecked-indexed-access.solution.ts} | 0 ...91-creating-declaration-files-and-declaration-maps.problem.ts} | 0 ...1-creating-declaration-files-and-declaration-maps.solution.ts} | 0 .../192-setting-up-types-for-node.problem.ts} | 0 .../192-setting-up-types-for-node.solution.ts} | 0 .../193-set-up-types-for-simple-scripts.problem.ts} | 0 .../193-set-up-types-for-simple-scripts.solution.ts} | 0 .../194-set-up-types-for-test-files.problem.ts} | 0 .../194-set-up-types-for-test-files.solution.ts} | 0 .../195-set-up-types-for-bundled-web-app.problem.ts} | 0 .../195-set-up-types-for-bundled-web-app.solution.ts} | 0 .../196-intro-to-the-utils-folder.problem.ts} | 0 .../196-intro-to-the-utils-folder.solution.ts} | 0 .../197-generic-functions-without-inference.problem.ts} | 0 .../197-generic-functions-without-inference.solution.ts} | 0 .../198-type-parameter-defaults-in-generic-functions.problem.ts} | 0 .../198-type-parameter-defaults-in-generic-functions.solution.ts} | 0 ...-type-parameter-constraints-with-generic-functions.problem.ts} | 0 ...type-parameter-constraints-with-generic-functions.solution.ts} | 0 .../200-generic-functions-with-inference.problem.ts} | 0 .../200-generic-functions-with-inference.solution.ts} | 0 .../201-multiple-type-arguments.problem.ts} | 0 .../201-multiple-type-arguments.solution.ts} | 0 src/085-the-utils-folder/202-create-group-by-function.problem.ts | 0 src/085-the-utils-folder/202-create-group-by-function.solution.ts | 0 src/085-the-utils-folder/203-type-predicates.problem.ts | 0 src/085-the-utils-folder/203-type-predicates.solution.ts | 0 src/085-the-utils-folder/204-assertion-functions.problem.ts | 0 src/085-the-utils-folder/204-assertion-functions.solution.ts | 0 src/090-the-style-guide/205-setting-up-eslint.problem.ts | 0 src/090-the-style-guide/205-setting-up-eslint.solution.ts | 0 src/090-the-style-guide/206-hungarian-notation.problem.ts | 0 src/090-the-style-guide/206-hungarian-notation.solution.ts | 0 src/090-the-style-guide/207-where-to-put-your-types.problem.ts | 0 src/090-the-style-guide/207-where-to-put-your-types.solution.ts | 0 src/090-the-style-guide/208-colocation-of-types.problem.ts | 0 src/090-the-style-guide/208-colocation-of-types.solution.ts | 0 src/090-the-style-guide/209-explicit-any-rule-or-not.problem.ts | 0 src/090-the-style-guide/209-explicit-any-rule-or-not.solution.ts | 0 .../210-explicit-return-types-or-not.problem.ts | 0 .../210-explicit-return-types-or-not.solution.ts | 0 .../211-any-vs-ts-ignore-vs-ts-expect-error.problem.ts | 0 .../211-any-vs-ts-ignore-vs-ts-expect-error.solution.ts | 0 src/090-the-style-guide/212-result-type.problem.ts | 0 src/090-the-style-guide/212-result-type.solution.ts | 0 .../213-strict-file-by-file-vs-ramp-up-strictness.problem.ts | 0 .../213-strict-file-by-file-vs-ramp-up-strictness.solution.ts | 0 .../214-dependencies-first.problem.ts | 0 .../214-dependencies-first.solution.ts | 0 src/095-migrating-from-javascript/215-madge.problem.ts | 0 src/095-migrating-from-javascript/215-madge.solution.ts | 0 364 files changed, 0 insertions(+), 0 deletions(-) rename src/{016.5-ide-superpowers/041-autocomplete-for-string-literals.problem.ts => 015-essential-types-and-annotations/036-typing-array-reduce.problem.ts} (100%) rename src/{016.5-ide-superpowers/041-autocomplete-for-string-literals.solution.ts => 015-essential-types-and-annotations/036-typing-array-reduce.solution.ts} (100%) rename src/015-essential-types-and-annotations/{036-type-async-functions.problem.ts => 037-type-async-functions.problem.ts} (100%) rename src/015-essential-types-and-annotations/{036-type-async-functions.solution.ts => 037-type-async-functions.solution.ts} (100%) rename src/016.5-ide-superpowers/{037-understand-the-ts-server.explainer.ts => 038-understand-the-ts-server.explainer.ts} (100%) rename src/016.5-ide-superpowers/{038-understand-how-to-hover-a-variable-to-see-its-type.problem.ts => 039-understand-how-to-hover-a-variable-to-see-its-type.problem.ts} (100%) rename src/016.5-ide-superpowers/{038-understand-how-to-hover-a-variable-to-see-its-type.solution.ts => 039-understand-how-to-hover-a-variable-to-see-its-type.solution.ts} (100%) rename src/016.5-ide-superpowers/{039-hovering-intersections-and-interfaces.problem.ts => 040-hovering-intersections-and-interfaces.problem.ts} (100%) rename src/016.5-ide-superpowers/{040-autocomplete-for-object-properties.problem.ts => 041-autocomplete-for-object-properties.problem.ts} (100%) rename src/016.5-ide-superpowers/{040-autocomplete-for-object-properties.solution.ts => 041-autocomplete-for-object-properties.solution.ts} (100%) rename src/016.5-ide-superpowers/{042-autocomplete-for-jsx.problem.ts => 042-autocomplete-for-string-literals.problem.ts} (100%) rename src/016.5-ide-superpowers/{042-autocomplete-for-jsx.solution.ts => 042-autocomplete-for-string-literals.solution.ts} (100%) rename src/016.5-ide-superpowers/{043-basics-of-errors.problem.ts => 043-autocomplete-for-jsx.problem.ts} (100%) rename src/016.5-ide-superpowers/{043-basics-of-errors.solution.ts => 043-autocomplete-for-jsx.solution.ts} (100%) rename src/016.5-ide-superpowers/{044-go-to-definition.problem.ts => 044-basics-of-errors.problem.ts} (100%) rename src/016.5-ide-superpowers/{044-go-to-definition.solution.ts => 044-basics-of-errors.solution.ts} (100%) rename src/016.5-ide-superpowers/{045-find-all-references.problem.ts => 045-go-to-definition.problem.ts} (100%) rename src/016.5-ide-superpowers/{045-find-all-references.solution.ts => 045-go-to-definition.solution.ts} (100%) rename src/016.5-ide-superpowers/{046-rename-symbol.problem.ts => 046-find-all-references.problem.ts} (100%) rename src/016.5-ide-superpowers/{046-rename-symbol.solution.ts => 046-find-all-references.solution.ts} (100%) rename src/016.5-ide-superpowers/{047-resetting-the-typescript-server.problem.ts => 047-rename-symbol.problem.ts} (100%) rename src/016.5-ide-superpowers/{047-resetting-the-typescript-server.solution.ts => 047-rename-symbol.solution.ts} (100%) rename src/{020-objects/073-record-type-with-union-as-keys.problem.ts => 016.5-ide-superpowers/048-resetting-the-typescript-server.problem.ts} (100%) rename src/{020-objects/073-record-type-with-union-as-keys.solution.ts => 016.5-ide-superpowers/048-resetting-the-typescript-server.solution.ts} (100%) rename src/018-unions-and-narrowing/{048-introduction-to-unions.problem.ts => 049-introduction-to-unions.problem.ts} (100%) rename src/018-unions-and-narrowing/{048-introduction-to-unions.solution.ts => 049-introduction-to-unions.solution.ts} (100%) rename src/018-unions-and-narrowing/{049-literal-types.problem.ts => 050-literal-types.problem.ts} (100%) rename src/018-unions-and-narrowing/{049-literal-types.solution.1.ts => 050-literal-types.solution.1.ts} (100%) rename src/018-unions-and-narrowing/{049-literal-types.solution.2.ts => 050-literal-types.solution.2.ts} (100%) rename src/018-unions-and-narrowing/{050-combining-unions.problem.ts => 051-combining-unions.problem.ts} (100%) rename src/018-unions-and-narrowing/{050-combining-unions.solution.ts => 051-combining-unions.solution.ts} (100%) rename src/018-unions-and-narrowing/{051-how-big-can-a-union-be.explainer.ts => 052-how-big-can-a-union-be.explainer.ts} (100%) rename src/018-unions-and-narrowing/{052-literals-vs-wider-types.explainer.ts => 053-literals-vs-wider-types.explainer.ts} (100%) rename src/018-unions-and-narrowing/{053-narrowing-unions-with-typeof.explainer.ts => 054-narrowing-unions-with-typeof.explainer.ts} (100%) rename src/018-unions-and-narrowing/{054-narrowing-with-if-statements.problem.ts => 055-narrowing-with-if-statements.problem.ts} (100%) rename src/018-unions-and-narrowing/{054-narrowing-with-if-statements.solution.1.ts => 055-narrowing-with-if-statements.solution.1.ts} (100%) rename src/018-unions-and-narrowing/{054-narrowing-with-if-statements.solution.2.ts => 055-narrowing-with-if-statements.solution.2.ts} (100%) rename src/018-unions-and-narrowing/{054-narrowing-with-if-statements.solution.3.ts => 055-narrowing-with-if-statements.solution.3.ts} (100%) rename src/018-unions-and-narrowing/{054-narrowing-with-if-statements.solution.4.ts => 055-narrowing-with-if-statements.solution.4.ts} (100%) rename src/018-unions-and-narrowing/{054-narrowing-with-if-statements.solution.5.ts => 055-narrowing-with-if-statements.solution.5.ts} (100%) rename src/018-unions-and-narrowing/{055-narrowing-with-boolean-wont-work.explainer.ts => 056-narrowing-with-boolean-wont-work.explainer.ts} (100%) rename src/018-unions-and-narrowing/{056-throwing-errors-to-narrow.problem.ts => 057-throwing-errors-to-narrow.problem.ts} (100%) rename src/018-unions-and-narrowing/{056-throwing-errors-to-narrow.solution.ts => 057-throwing-errors-to-narrow.solution.ts} (100%) rename src/018-unions-and-narrowing/{057-narrowing-with-instanceof-statements.problem.ts => 058-narrowing-with-instanceof-statements.problem.ts} (100%) rename src/018-unions-and-narrowing/{057-narrowing-with-instanceof-statements.solution.ts => 058-narrowing-with-instanceof-statements.solution.ts} (100%) rename src/018-unions-and-narrowing/{058-narrowing-with-in-statements.problem.ts => 059-narrowing-with-in-statements.problem.ts} (100%) rename src/018-unions-and-narrowing/{058-narrowing-with-in-statements.solution.ts => 059-narrowing-with-in-statements.solution.ts} (100%) rename src/018-unions-and-narrowing/{059-narrowing-unknown-to-a-value.problem.ts => 060-narrowing-unknown-to-a-value.problem.ts} (100%) rename src/018-unions-and-narrowing/{059-narrowing-unknown-to-a-value.solution.ts => 060-narrowing-unknown-to-a-value.solution.ts} (100%) rename src/018-unions-and-narrowing/{060-narrowing-with-ternaries.problem.ts => 061-narrowing-with-ternaries.problem.ts} (100%) rename src/018-unions-and-narrowing/{060-narrowing-with-ternaries.solution.ts => 061-narrowing-with-ternaries.solution.ts} (100%) rename src/018-unions-and-narrowing/{061-narrowing-with-nullish-coalescing.problem.ts => 062-narrowing-with-nullish-coalescing.problem.ts} (100%) rename src/018-unions-and-narrowing/{061-narrowing-with-nullish-coalescing.solution.ts => 062-narrowing-with-nullish-coalescing.solution.ts} (100%) rename src/{028-mutability/083-let-and-const-inference.problem.ts => 018-unions-and-narrowing/063-evolving-any.problem.ts} (100%) rename src/{028-mutability/083-let-and-const-inference.solution.ts => 018-unions-and-narrowing/063-evolving-any.solution.ts} (100%) rename src/{028-mutability/084-object-property-inference.problem.ts => 018-unions-and-narrowing/064-evolving-any-arrays.problem.ts} (100%) rename src/{028-mutability/084-object-property-inference.solution.ts => 018-unions-and-narrowing/064-evolving-any-arrays.solution.ts} (100%) rename src/018-unions-and-narrowing/{062-intro-to-discriminated-unions.problem.ts => 065-intro-to-discriminated-unions.problem.ts} (100%) rename src/018-unions-and-narrowing/{062-intro-to-discriminated-unions.solution.ts => 065-intro-to-discriminated-unions.solution.ts} (100%) rename src/018-unions-and-narrowing/{063-destructuring-a-discriminated-union.problem.ts => 066-destructuring-a-discriminated-union.problem.ts} (100%) rename src/018-unions-and-narrowing/{063-destructuring-a-discriminated-union.solution.ts => 066-destructuring-a-discriminated-union.solution.ts} (100%) rename src/018-unions-and-narrowing/{064-narrowing-a-discriminated-union-with-a-switch-statement.problem.ts => 067-narrowing-a-discriminated-union-with-a-switch-statement.problem.ts} (100%) rename src/018-unions-and-narrowing/{064-narrowing-a-discriminated-union-with-a-switch-statement.solution.ts => 067-narrowing-a-discriminated-union-with-a-switch-statement.solution.ts} (100%) rename src/018-unions-and-narrowing/{065-narrowing-with-switch-true.explainer.ts => 068-narrowing-with-switch-true.explainer.ts} (100%) rename src/018-unions-and-narrowing/{066-destructuring-a-discriminated-tuple.problem.ts => 069-destructuring-a-discriminated-tuple.problem.ts} (100%) rename src/018-unions-and-narrowing/{066-destructuring-a-discriminated-tuple.solution.ts => 069-destructuring-a-discriminated-tuple.solution.ts} (100%) rename src/018-unions-and-narrowing/{067-discriminated-booleans.problem.ts => 070-discriminated-booleans.problem.ts} (100%) rename src/018-unions-and-narrowing/{067-discriminated-booleans.solution.ts => 070-discriminated-booleans.solution.ts} (100%) rename src/{028-mutability/086-readonly-object-properties.problem.ts => 018-unions-and-narrowing/071-adding-defaults-to-discriminated-union.problem.ts} (100%) rename src/{028-mutability/086-readonly-object-properties.solution.ts => 018-unions-and-narrowing/071-adding-defaults-to-discriminated-union.solution.ts} (100%) rename src/020-objects/{068-extend-object-using-intersections.problem.ts => 072-extend-object-using-intersections.problem.ts} (100%) rename src/020-objects/{068-extend-object-using-intersections.solution.ts => 072-extend-object-using-intersections.solution.ts} (100%) rename src/020-objects/{069-extend-object-using-interfaces.problem.ts => 073-extend-object-using-interfaces.problem.ts} (100%) rename src/020-objects/{069-extend-object-using-interfaces.solution.1.ts => 073-extend-object-using-interfaces.solution.1.ts} (100%) rename src/020-objects/{069-extend-object-using-interfaces.solution.2.ts => 073-extend-object-using-interfaces.solution.2.ts} (100%) rename src/020-objects/{070-compare-between-intersections-and-interfaces.explainer.ts => 074-compare-between-intersections-and-interfaces.explainer.ts} (100%) rename src/020-objects/{071-index-signatures.problem.ts => 075-index-signatures.problem.ts} (100%) rename src/020-objects/{071-index-signatures.solution.1.ts => 075-index-signatures.solution.1.ts} (100%) rename src/020-objects/{071-index-signatures.solution.2.ts => 075-index-signatures.solution.2.ts} (100%) rename src/020-objects/{071-index-signatures.solution.3.ts => 075-index-signatures.solution.3.ts} (100%) rename src/020-objects/{071-index-signatures.solution.4.ts => 075-index-signatures.solution.4.ts} (100%) rename src/020-objects/{072-index-signatures-with-defined-keys.problem.ts => 076-index-signatures-with-defined-keys.problem.ts} (100%) rename src/020-objects/{072-index-signatures-with-defined-keys.solution.1.ts => 076-index-signatures-with-defined-keys.solution.1.ts} (100%) rename src/020-objects/{072-index-signatures-with-defined-keys.solution.2.ts => 076-index-signatures-with-defined-keys.solution.2.ts} (100%) rename src/{028-mutability/087-intro-to-as-const.problem.ts => 020-objects/077-record-type-with-union-as-keys.problem.ts} (100%) rename src/{028-mutability/087-intro-to-as-const.solution.ts => 020-objects/077-record-type-with-union-as-keys.solution.ts} (100%) rename src/020-objects/{074-declaration-merging-of-interfaces.problem.ts => 078-declaration-merging-of-interfaces.problem.ts} (100%) rename src/020-objects/{074-declaration-merging-of-interfaces.solution.ts => 078-declaration-merging-of-interfaces.solution.ts} (100%) rename src/020-objects/{075-pick-type-helper.problem.ts => 079-pick-type-helper.problem.ts} (100%) rename src/020-objects/{075-pick-type-helper.solution.1.ts => 079-pick-type-helper.solution.1.ts} (100%) rename src/020-objects/{075-pick-type-helper.solution.2.ts => 079-pick-type-helper.solution.2.ts} (100%) rename src/020-objects/{076-common-keys-of-unions-of-objects.problem.ts => 080-common-keys-of-unions-of-objects.problem.ts} (100%) rename src/020-objects/{076-common-keys-of-unions-of-objects.solution.ts => 080-common-keys-of-unions-of-objects.solution.ts} (100%) rename src/020-objects/{077-omit-type-helper.problem.ts => 081-omit-type-helper.problem.ts} (100%) rename src/020-objects/{077-omit-type-helper.solution.1.ts => 081-omit-type-helper.solution.1.ts} (100%) rename src/020-objects/{077-omit-type-helper.solution.2.ts => 081-omit-type-helper.solution.2.ts} (100%) rename src/020-objects/{078-no-autocomplete-on-omit.explainer.ts => 082-no-autocomplete-on-omit.explainer.ts} (100%) rename src/020-objects/{079-omit-cant-distribute.explainer.1.ts => 083-omit-cant-distribute.explainer.1.ts} (100%) rename src/020-objects/{079-omit-cant-distribute.explainer.2.ts => 083-omit-cant-distribute.explainer.2.ts} (100%) rename src/020-objects/{080-omit-or-pick-more-than-one-thing.problem.ts => 084-omit-or-pick-more-than-one-thing.problem.ts} (100%) rename src/020-objects/{080-omit-or-pick-more-than-one-thing.solution.1.ts => 084-omit-or-pick-more-than-one-thing.solution.1.ts} (100%) rename src/020-objects/{080-omit-or-pick-more-than-one-thing.solution.2.ts => 084-omit-or-pick-more-than-one-thing.solution.2.ts} (100%) rename src/020-objects/{081-partial-type-helper.problem.ts => 085-partial-type-helper.problem.ts} (100%) rename src/020-objects/{081-partial-type-helper.solution.ts => 085-partial-type-helper.solution.ts} (100%) rename src/020-objects/{082-required-type-helper.explainer.ts => 086-required-type-helper.explainer.ts} (100%) rename src/028-mutability/{088-as-const-vs-object-freeze.problem.ts => 087-let-and-const-inference.problem.ts} (100%) rename src/028-mutability/{088-as-const-vs-object-freeze.solution.ts => 087-let-and-const-inference.solution.ts} (100%) rename src/028-mutability/{089-readonly-arrays.problem.ts => 088-object-property-inference.problem.ts} (100%) rename src/028-mutability/{089-readonly-arrays.solution.ts => 088-object-property-inference.solution.ts} (100%) rename src/028-mutability/{085-narrowing-in-different-scopes.problem.ts => 089-narrowing-in-different-scopes.problem.ts} (100%) rename src/028-mutability/{085-narrowing-in-different-scopes.solution.1.ts => 089-narrowing-in-different-scopes.solution.1.ts} (100%) rename src/028-mutability/{085-narrowing-in-different-scopes.solution.2.ts => 089-narrowing-in-different-scopes.solution.2.ts} (100%) rename src/028-mutability/{090-includes-on-readonly-arrays.problem.ts => 090-readonly-object-properties.problem.ts} (100%) rename src/028-mutability/{090-includes-on-readonly-arrays.solution.ts => 090-readonly-object-properties.solution.ts} (100%) rename src/028-mutability/{091-readonly-arrays-vs-mutable-arrays.problem.ts => 091-intro-to-as-const.problem.ts} (100%) rename src/028-mutability/{091-readonly-arrays-vs-mutable-arrays.solution.ts => 091-intro-to-as-const.solution.ts} (100%) rename src/028-mutability/{092-as-const-to-make-functions-infer-a-tuple.problem.ts => 092-as-const-vs-object-freeze.problem.ts} (100%) rename src/028-mutability/{092-as-const-to-make-functions-infer-a-tuple.solution.ts => 092-as-const-vs-object-freeze.solution.ts} (100%) rename src/028-mutability/{093-as-const-can-make-strings-infer-as-their-literals-in-objects.problem.ts => 093-readonly-arrays.problem.ts} (100%) rename src/028-mutability/{093-as-const-can-make-strings-infer-as-their-literals-in-objects.solution.ts => 093-readonly-arrays.solution.ts} (100%) rename src/{030-classes/094-understand-classes.problem.ts => 028-mutability/094-includes-on-readonly-arrays.problem.ts} (100%) rename src/{030-classes/094-understand-classes.solution.ts => 028-mutability/094-includes-on-readonly-arrays.solution.ts} (100%) rename src/{030-classes/095-public-and-private-properties.problem.ts => 028-mutability/095-readonly-arrays-vs-mutable-arrays.problem.ts} (100%) rename src/{030-classes/095-public-and-private-properties.solution.ts => 028-mutability/095-readonly-arrays-vs-mutable-arrays.solution.ts} (100%) rename src/{030-classes/096-hash-in-javascript.problem.ts => 028-mutability/096-as-const-to-make-functions-infer-a-tuple.problem.ts} (100%) rename src/{030-classes/096-hash-in-javascript.solution.ts => 028-mutability/096-as-const-to-make-functions-infer-a-tuple.solution.ts} (100%) rename src/{030-classes/097-optional-class-properties.problem.ts => 028-mutability/097-as-const-can-make-strings-infer-as-their-literals-in-objects.problem.ts} (100%) rename src/{030-classes/097-optional-class-properties.solution.ts => 028-mutability/097-as-const-can-make-strings-infer-as-their-literals-in-objects.solution.ts} (100%) rename src/030-classes/{098-readonly-class-properties.problem.ts => 098-understand-classes.problem.ts} (100%) rename src/030-classes/{098-readonly-class-properties.solution.ts => 098-understand-classes.solution.ts} (100%) rename src/030-classes/{099-class-methods.problem.ts => 099-public-and-private-properties.problem.ts} (100%) rename src/030-classes/{099-class-methods.solution.ts => 099-public-and-private-properties.solution.ts} (100%) rename src/030-classes/{100-decorators.problem.ts => 100-hash-in-javascript.problem.ts} (100%) rename src/030-classes/{100-decorators.solution.ts => 100-hash-in-javascript.solution.ts} (100%) rename src/030-classes/{101-implementing-interfaces.problem.ts => 101-optional-class-properties.problem.ts} (100%) rename src/030-classes/{101-implementing-interfaces.solution.ts => 101-optional-class-properties.solution.ts} (100%) rename src/030-classes/{102-typing-this-in-functions.problem.ts => 102-readonly-class-properties.problem.ts} (100%) rename src/030-classes/{102-typing-this-in-functions.solution.ts => 102-readonly-class-properties.solution.ts} (100%) rename src/030-classes/{103-can-you-type-this-in-functions.problem.ts => 103-class-methods.problem.ts} (100%) rename src/030-classes/{103-can-you-type-this-in-functions.solution.ts => 103-class-methods.solution.ts} (100%) rename src/{032-typescript-only-features/104-auto-assignation-in-classes.problem.ts => 030-classes/104-decorators.problem.ts} (100%) rename src/{032-typescript-only-features/104-auto-assignation-in-classes.solution.ts => 030-classes/104-decorators.solution.ts} (100%) rename src/{032-typescript-only-features/105-enums.problem.ts => 030-classes/105-implementing-interfaces.problem.ts} (100%) rename src/{032-typescript-only-features/105-enums.solution.ts => 030-classes/105-implementing-interfaces.solution.ts} (100%) rename src/{032-typescript-only-features/106-const-enums.problem.ts => 030-classes/106-typing-this-in-functions.problem.ts} (100%) rename src/{032-typescript-only-features/106-const-enums.solution.ts => 030-classes/106-typing-this-in-functions.solution.ts} (100%) rename src/{032-typescript-only-features/107-namespaces.problem.ts => 030-classes/107-can-you-type-this-in-functions.problem.ts} (100%) rename src/{032-typescript-only-features/107-namespaces.solution.ts => 030-classes/107-can-you-type-this-in-functions.solution.ts} (100%) rename src/032-typescript-only-features/{108-namespaces-can-be-used-as-types-or-values.problem.ts => 108-auto-assignation-in-classes.problem.ts} (100%) rename src/032-typescript-only-features/{108-namespaces-can-be-used-as-types-or-values.solution.ts => 108-auto-assignation-in-classes.solution.ts} (100%) rename src/032-typescript-only-features/{109-namespaces-can-declaration-merge.problem.ts => 109-enums.problem.ts} (100%) rename src/032-typescript-only-features/{109-namespaces-can-declaration-merge.solution.ts => 109-enums.solution.ts} (100%) rename src/032-typescript-only-features/{110-interfaces-within-namespaces-can-declaration-merge.problem.ts => 110-const-enums.problem.ts} (100%) rename src/032-typescript-only-features/{110-interfaces-within-namespaces-can-declaration-merge.solution.ts => 110-const-enums.solution.ts} (100%) rename src/032-typescript-only-features/{111-should-you-use-namespaces.problem.ts => 111-namespaces.problem.ts} (100%) rename src/032-typescript-only-features/{111-should-you-use-namespaces.solution.ts => 111-namespaces.solution.ts} (100%) rename src/{035-understanding-the-compiler/112-any.problem.ts => 032-typescript-only-features/112-namespaces-can-be-used-as-types-or-values.problem.ts} (100%) rename src/{035-understanding-the-compiler/112-any.solution.ts => 032-typescript-only-features/112-namespaces-can-be-used-as-types-or-values.solution.ts} (100%) rename src/{035-understanding-the-compiler/113-global-typings-use-any.problem.ts => 032-typescript-only-features/113-namespaces-can-declaration-merge.problem.ts} (100%) rename src/{035-understanding-the-compiler/113-global-typings-use-any.solution.ts => 032-typescript-only-features/113-namespaces-can-declaration-merge.solution.ts} (100%) rename src/{035-understanding-the-compiler/114-as-and-as-any.problem.ts => 032-typescript-only-features/114-interfaces-within-namespaces-can-declaration-merge.problem.ts} (100%) rename src/{035-understanding-the-compiler/114-as-and-as-any.solution.ts => 032-typescript-only-features/114-interfaces-within-namespaces-can-declaration-merge.solution.ts} (100%) rename src/{035-understanding-the-compiler/115-limits-of-as.problem.ts => 032-typescript-only-features/115-should-you-use-namespaces.problem.ts} (100%) rename src/{035-understanding-the-compiler/115-limits-of-as.solution.ts => 032-typescript-only-features/115-should-you-use-namespaces.solution.ts} (100%) rename src/035-understanding-the-compiler/{116-satisfies.problem.ts => 116-any.problem.ts} (100%) rename src/035-understanding-the-compiler/{116-satisfies.solution.ts => 116-any.solution.ts} (100%) rename src/035-understanding-the-compiler/{117-annotating-errors-a-function-throws.problem.ts => 117-global-typings-use-any.problem.ts} (100%) rename src/035-understanding-the-compiler/{117-annotating-errors-a-function-throws.solution.ts => 117-global-typings-use-any.solution.ts} (100%) rename src/035-understanding-the-compiler/{118-excess-properties-warnings.problem.ts => 118-as-and-as-any.problem.ts} (100%) rename src/035-understanding-the-compiler/{118-excess-properties-warnings.solution.ts => 118-as-and-as-any.solution.ts} (100%) rename src/035-understanding-the-compiler/{119-object-keys-and-object-entries.problem.ts => 119-limits-of-as.problem.ts} (100%) rename src/035-understanding-the-compiler/{119-object-keys-and-object-entries.solution.ts => 119-limits-of-as.solution.ts} (100%) rename src/035-understanding-the-compiler/{120-structural-vs-nominal-typing.problem.ts => 120-ts-ignore.problem.ts} (100%) rename src/035-understanding-the-compiler/{120-structural-vs-nominal-typing.solution.ts => 120-ts-ignore.solution.ts} (100%) rename src/035-understanding-the-compiler/{121-how-enums-break-structural-typing.problem.ts => 121-ts-expect-error.problem.ts} (100%) rename src/035-understanding-the-compiler/{121-how-enums-break-structural-typing.solution.ts => 121-ts-expect-error.solution.ts} (100%) rename src/035-understanding-the-compiler/{122-unions-of-functions.problem.ts => 122-satisfies.problem.ts} (100%) rename src/035-understanding-the-compiler/{122-unions-of-functions.solution.ts => 122-satisfies.solution.ts} (100%) rename src/035-understanding-the-compiler/{123-empty-object-type.problem.ts => 123-satisfies-with-as-const.problem.ts} (100%) rename src/035-understanding-the-compiler/{123-empty-object-type.solution.ts => 123-satisfies-with-as-const.solution.ts} (100%) rename src/{040-deriving-types-from-values/124-typeof-keyword.problem.ts => 035-understanding-the-compiler/124-annotating-errors-a-function-throws.problem.ts} (100%) rename src/{040-deriving-types-from-values/124-typeof-keyword.solution.ts => 035-understanding-the-compiler/124-annotating-errors-a-function-throws.solution.ts} (100%) rename src/{040-deriving-types-from-values/125-create-runtime-values-from-types.problem.ts => 035-understanding-the-compiler/125-excess-properties-warnings.problem.ts} (100%) rename src/{040-deriving-types-from-values/125-create-runtime-values-from-types.solution.ts => 035-understanding-the-compiler/125-excess-properties-warnings.solution.ts} (100%) rename src/{040-deriving-types-from-values/126-classes-and-enums-cross-value-and-type-world.problem.ts => 035-understanding-the-compiler/126-object-keys-and-object-entries.problem.ts} (100%) rename src/{040-deriving-types-from-values/126-classes-and-enums-cross-value-and-type-world.solution.ts => 035-understanding-the-compiler/126-object-keys-and-object-entries.solution.ts} (100%) rename src/{040-deriving-types-from-values/127-this-crosses-value-and-type-world.problem.ts => 035-understanding-the-compiler/127-structural-vs-nominal-typing.problem.ts} (100%) rename src/{040-deriving-types-from-values/127-this-crosses-value-and-type-world.solution.ts => 035-understanding-the-compiler/127-structural-vs-nominal-typing.solution.ts} (100%) rename src/{040-deriving-types-from-values/128-return-type.problem.ts => 035-understanding-the-compiler/128-how-enums-break-structural-typing.problem.ts} (100%) rename src/{040-deriving-types-from-values/128-return-type.solution.ts => 035-understanding-the-compiler/128-how-enums-break-structural-typing.solution.ts} (100%) rename src/{040-deriving-types-from-values/129-parameters-type-helper.problem.ts => 035-understanding-the-compiler/129-unions-of-functions.problem.ts} (100%) rename src/{040-deriving-types-from-values/129-parameters-type-helper.solution.ts => 035-understanding-the-compiler/129-unions-of-functions.solution.ts} (100%) rename src/{040-deriving-types-from-values/130-keyof.problem.ts => 035-understanding-the-compiler/130-empty-object-type.problem.ts} (100%) rename src/{040-deriving-types-from-values/130-keyof.solution.ts => 035-understanding-the-compiler/130-empty-object-type.solution.ts} (100%) rename src/040-deriving-types-from-values/{131-indexed-access-types.problem.ts => 131-typeof-keyword.problem.ts} (100%) rename src/040-deriving-types-from-values/{131-indexed-access-types.solution.ts => 131-typeof-keyword.solution.ts} (100%) rename src/040-deriving-types-from-values/{132-pass-unions-to-indexed-access-types.problem.ts => 132-create-runtime-values-from-types.problem.ts} (100%) rename src/040-deriving-types-from-values/{132-pass-unions-to-indexed-access-types.solution.ts => 132-create-runtime-values-from-types.solution.ts} (100%) rename src/040-deriving-types-from-values/{133-pass-keyof-into-an-indexed-access-type.problem.ts => 133-classes-and-enums-cross-value-and-type-world.problem.ts} (100%) rename src/040-deriving-types-from-values/{133-pass-keyof-into-an-indexed-access-type.solution.ts => 133-classes-and-enums-cross-value-and-type-world.solution.ts} (100%) rename src/040-deriving-types-from-values/{134-create-an-enum-from-as-const-object.problem.ts => 134-this-crosses-value-and-type-world.problem.ts} (100%) rename src/040-deriving-types-from-values/{134-create-an-enum-from-as-const-object.solution.ts => 134-this-crosses-value-and-type-world.solution.ts} (100%) rename src/040-deriving-types-from-values/{135-create-a-union-from-an-as-const-array.problem.ts => 135-return-type.problem.ts} (100%) rename src/040-deriving-types-from-values/{135-create-a-union-from-an-as-const-array.solution.ts => 135-return-type.solution.ts} (100%) rename src/040-deriving-types-from-values/{136-should-i-use-enums-or-as-const.problem.ts => 136-parameters-type-helper.problem.ts} (100%) rename src/040-deriving-types-from-values/{136-should-i-use-enums-or-as-const.solution.ts => 136-parameters-type-helper.solution.ts} (100%) rename src/040-deriving-types-from-values/{137-using-numeric-comparators-on-enums.problem.ts => 137-keyof.problem.ts} (100%) rename src/040-deriving-types-from-values/{137-using-numeric-comparators-on-enums.solution.ts => 137-keyof.solution.ts} (100%) rename src/{060-modules-and-namespaces/138-module-or-script.problem.ts => 040-deriving-types-from-values/138-indexed-access-types.problem.ts} (100%) rename src/{060-modules-and-namespaces/138-module-or-script.solution.ts => 040-deriving-types-from-values/138-indexed-access-types.solution.ts} (100%) rename src/{060-modules-and-namespaces/139-module-detection-force.problem.ts => 040-deriving-types-from-values/139-pass-unions-to-indexed-access-types.problem.ts} (100%) rename src/{060-modules-and-namespaces/139-module-detection-force.solution.ts => 040-deriving-types-from-values/139-pass-unions-to-indexed-access-types.solution.ts} (100%) rename src/{060-modules-and-namespaces/140-isolated-modules.problem.ts => 040-deriving-types-from-values/140-pass-keyof-into-an-indexed-access-type.problem.ts} (100%) rename src/{060-modules-and-namespaces/140-isolated-modules.solution.ts => 040-deriving-types-from-values/140-pass-keyof-into-an-indexed-access-type.solution.ts} (100%) rename src/{060-modules-and-namespaces/141-cjs-vs-esm.problem.ts => 040-deriving-types-from-values/141-create-an-enum-from-as-const-object.problem.ts} (100%) rename src/{060-modules-and-namespaces/141-cjs-vs-esm.solution.ts => 040-deriving-types-from-values/141-create-an-enum-from-as-const-object.solution.ts} (100%) rename src/{060-modules-and-namespaces/142-module-resolution-bundler-or-nodenext.problem.ts => 040-deriving-types-from-values/142-create-a-union-from-an-as-const-array.problem.ts} (100%) rename src/{060-modules-and-namespaces/142-module-resolution-bundler-or-nodenext.solution.ts => 040-deriving-types-from-values/142-create-a-union-from-an-as-const-array.solution.ts} (100%) rename src/{060-modules-and-namespaces/143-declaration-files.problem.ts => 040-deriving-types-from-values/143-should-i-use-enums-or-as-const.problem.ts} (100%) rename src/{060-modules-and-namespaces/143-declaration-files.solution.ts => 040-deriving-types-from-values/143-should-i-use-enums-or-as-const.solution.ts} (100%) rename src/{060-modules-and-namespaces/144-skip-lib-check-true.problem.ts => 040-deriving-types-from-values/144-using-numeric-comparators-on-enums.problem.ts} (100%) rename src/{060-modules-and-namespaces/144-skip-lib-check-true.solution.ts => 040-deriving-types-from-values/144-using-numeric-comparators-on-enums.solution.ts} (100%) rename src/060-modules-and-namespaces/{145-declaration-files-can-be-modules-or-scripts.problem.ts => 145-module-or-script.problem.ts} (100%) rename src/060-modules-and-namespaces/{145-declaration-files-can-be-modules-or-scripts.solution.ts => 145-module-or-script.solution.ts} (100%) rename src/060-modules-and-namespaces/{146-declaration-files-can-be-used-to-type-js-files.problem.ts => 146-module-detection-force.problem.ts} (100%) rename src/060-modules-and-namespaces/{146-declaration-files-can-be-used-to-type-js-files.solution.ts => 146-module-detection-force.solution.ts} (100%) rename src/060-modules-and-namespaces/{147-should-you-use-declaration-files.problem.ts => 147-isolated-modules.problem.ts} (100%) rename src/060-modules-and-namespaces/{147-should-you-use-declaration-files.solution.ts => 147-isolated-modules.solution.ts} (100%) rename src/060-modules-and-namespaces/{148-resolve-json-module.problem.ts => 148-cjs-vs-esm.problem.ts} (100%) rename src/060-modules-and-namespaces/{148-resolve-json-module.solution.ts => 148-cjs-vs-esm.solution.ts} (100%) rename src/060-modules-and-namespaces/{149-json-d-ts-files.problem.ts => 149-module-resolution-bundler-or-nodenext.problem.ts} (100%) rename src/060-modules-and-namespaces/{149-json-d-ts-files.solution.ts => 149-module-resolution-bundler-or-nodenext.solution.ts} (100%) rename src/{062-the-global-namespace/150-ambient-context-and-declare-const.problem.ts => 060-modules-and-namespaces/150-declaration-files.problem.ts} (100%) rename src/{062-the-global-namespace/150-ambient-context-and-declare-const.solution.ts => 060-modules-and-namespaces/150-declaration-files.solution.ts} (100%) rename src/{062-the-global-namespace/151-declare-global.problem.ts => 060-modules-and-namespaces/151-skip-lib-check-true.problem.ts} (100%) rename src/{062-the-global-namespace/151-declare-global.solution.ts => 060-modules-and-namespaces/151-skip-lib-check-true.solution.ts} (100%) rename src/{062-the-global-namespace/152-globals-are-tied-to-a-single-tsconfig.problem.ts => 060-modules-and-namespaces/152-declaration-files-can-be-modules-or-scripts.problem.ts} (100%) rename src/{062-the-global-namespace/152-globals-are-tied-to-a-single-tsconfig.solution.ts => 060-modules-and-namespaces/152-declaration-files-can-be-modules-or-scripts.solution.ts} (100%) rename src/{062-the-global-namespace/153-declare-global-or-declaration-file.problem.ts => 060-modules-and-namespaces/153-declaration-files-can-be-used-to-type-js-files.problem.ts} (100%) rename src/{062-the-global-namespace/153-declare-global-or-declaration-file.solution.ts => 060-modules-and-namespaces/153-declaration-files-can-be-used-to-type-js-files.solution.ts} (100%) rename src/{062-the-global-namespace/154-declare-module.problem.ts => 060-modules-and-namespaces/154-should-you-use-declaration-files.problem.ts} (100%) rename src/{062-the-global-namespace/154-declare-module.solution.ts => 060-modules-and-namespaces/154-should-you-use-declaration-files.solution.ts} (100%) rename src/{062-the-global-namespace/155-wildcard-in-declare-module.problem.ts => 060-modules-and-namespaces/155-resolve-json-module.problem.ts} (100%) rename src/{062-the-global-namespace/155-wildcard-in-declare-module.solution.ts => 060-modules-and-namespaces/155-resolve-json-module.solution.ts} (100%) rename src/{062-the-global-namespace/156-modifying-window.problem.ts => 060-modules-and-namespaces/156-json-d-ts-files.problem.ts} (100%) rename src/{062-the-global-namespace/156-modifying-window.solution.ts => 060-modules-and-namespaces/156-json-d-ts-files.solution.ts} (100%) rename src/062-the-global-namespace/{157-modifying-globalthis.problem.ts => 157-ambient-context-and-declare-const.problem.ts} (100%) rename src/062-the-global-namespace/{157-modifying-globalthis.solution.ts => 157-ambient-context-and-declare-const.solution.ts} (100%) rename src/062-the-global-namespace/{158-modifying-process-env.problem.ts => 158-declare-global.problem.ts} (100%) rename src/062-the-global-namespace/{158-modifying-process-env.solution.ts => 158-declare-global.solution.ts} (100%) rename src/{065-four-spaces-of-typescript-declarations/159-declare-module-for-overriding-third-party-libraries.problem.ts => 062-the-global-namespace/159-globals-are-tied-to-a-single-tsconfig.problem.ts} (100%) rename src/{065-four-spaces-of-typescript-declarations/159-declare-module-for-overriding-third-party-libraries.solution.ts => 062-the-global-namespace/159-globals-are-tied-to-a-single-tsconfig.solution.ts} (100%) rename src/{065-four-spaces-of-typescript-declarations/160-lib-d-ts.problem.ts => 062-the-global-namespace/160-declare-global-or-declaration-file.problem.ts} (100%) rename src/{065-four-spaces-of-typescript-declarations/160-lib-d-ts.solution.ts => 062-the-global-namespace/160-declare-global-or-declaration-file.solution.ts} (100%) rename src/{065-four-spaces-of-typescript-declarations/161-using-target-to-change-lib-d-ts.problem.ts => 062-the-global-namespace/161-declare-module.problem.ts} (100%) rename src/{065-four-spaces-of-typescript-declarations/161-using-target-to-change-lib-d-ts.solution.ts => 062-the-global-namespace/161-declare-module.solution.ts} (100%) rename src/{065-four-spaces-of-typescript-declarations/162-lib-dom-d-ts.problem.ts => 062-the-global-namespace/162-wildcard-in-declare-module.problem.ts} (100%) rename src/{065-four-spaces-of-typescript-declarations/162-lib-dom-d-ts.solution.ts => 062-the-global-namespace/162-wildcard-in-declare-module.solution.ts} (100%) rename src/{065-four-spaces-of-typescript-declarations/163-third-party-types.problem.ts => 062-the-global-namespace/163-modifying-window.problem.ts} (100%) rename src/{065-four-spaces-of-typescript-declarations/163-third-party-types.solution.ts => 062-the-global-namespace/163-modifying-window.solution.ts} (100%) rename src/{065-four-spaces-of-typescript-declarations/164-type-roots-in-tsconfig.problem.ts => 062-the-global-namespace/164-modifying-globalthis.problem.ts} (100%) rename src/{065-four-spaces-of-typescript-declarations/164-type-roots-in-tsconfig.solution.ts => 062-the-global-namespace/164-modifying-globalthis.solution.ts} (100%) rename src/{065-four-spaces-of-typescript-declarations/165-types-that-ship-with-libraries.problem.ts => 062-the-global-namespace/165-modifying-process-env.problem.ts} (100%) rename src/{065-four-spaces-of-typescript-declarations/165-types-that-ship-with-libraries.solution.ts => 062-the-global-namespace/165-modifying-process-env.solution.ts} (100%) rename src/{075-designing-your-types/166-domain-modelling-in-typescript.problem.ts => 065-four-spaces-of-typescript-declarations/166-declare-module-for-overriding-third-party-libraries.problem.ts} (100%) rename src/{075-designing-your-types/166-domain-modelling-in-typescript.solution.ts => 065-four-spaces-of-typescript-declarations/166-declare-module-for-overriding-third-party-libraries.solution.ts} (100%) rename src/{075-designing-your-types/167-intro-to-helper-types.problem.ts => 065-four-spaces-of-typescript-declarations/167-lib-d-ts.problem.ts} (100%) rename src/{075-designing-your-types/167-intro-to-helper-types.solution.ts => 065-four-spaces-of-typescript-declarations/167-lib-d-ts.solution.ts} (100%) rename src/{075-designing-your-types/168-multiple-type-parameters.problem.ts => 065-four-spaces-of-typescript-declarations/168-using-target-to-change-lib-d-ts.problem.ts} (100%) rename src/{075-designing-your-types/168-multiple-type-parameters.solution.ts => 065-four-spaces-of-typescript-declarations/168-using-target-to-change-lib-d-ts.solution.ts} (100%) rename src/{075-designing-your-types/169-default-type-parameters.problem.ts => 065-four-spaces-of-typescript-declarations/169-lib-dom-d-ts.problem.ts} (100%) rename src/{075-designing-your-types/169-default-type-parameters.solution.ts => 065-four-spaces-of-typescript-declarations/169-lib-dom-d-ts.solution.ts} (100%) rename src/{075-designing-your-types/170-type-helper-constraints.problem.ts => 065-four-spaces-of-typescript-declarations/170-third-party-types.problem.ts} (100%) rename src/{075-designing-your-types/170-type-helper-constraints.solution.ts => 065-four-spaces-of-typescript-declarations/170-third-party-types.solution.ts} (100%) rename src/{075-designing-your-types/171-tighter-version-of-omit.problem.ts => 065-four-spaces-of-typescript-declarations/171-type-roots-in-tsconfig.problem.ts} (100%) rename src/{075-designing-your-types/171-tighter-version-of-omit.solution.ts => 065-four-spaces-of-typescript-declarations/171-type-roots-in-tsconfig.solution.ts} (100%) rename src/{075-designing-your-types/172-template-literal-types.problem.ts => 065-four-spaces-of-typescript-declarations/172-types-that-ship-with-libraries.problem.ts} (100%) rename src/{075-designing-your-types/172-template-literal-types.solution.ts => 065-four-spaces-of-typescript-declarations/172-types-that-ship-with-libraries.solution.ts} (100%) rename src/075-designing-your-types/{173-passing-unions-to-template-literal-types.problem.ts => 173-domain-modelling-in-typescript.problem.ts} (100%) rename src/075-designing-your-types/{173-passing-unions-to-template-literal-types.solution.ts => 173-domain-modelling-in-typescript.solution.ts} (100%) rename src/{080-configuring-typescript/174-introduction-to-tsconfig.problem.ts => 075-designing-your-types/174-intro-to-helper-types.problem.ts} (100%) rename src/{080-configuring-typescript/174-introduction-to-tsconfig.solution.ts => 075-designing-your-types/174-intro-to-helper-types.solution.ts} (100%) rename src/{080-configuring-typescript/175-tsconfig-bases.problem.ts => 075-designing-your-types/175-multiple-type-parameters.problem.ts} (100%) rename src/{080-configuring-typescript/175-tsconfig-bases.solution.ts => 075-designing-your-types/175-multiple-type-parameters.solution.ts} (100%) rename src/{080-configuring-typescript/176-multiple-tsconfig-json-files.problem.ts => 075-designing-your-types/176-default-type-parameters.problem.ts} (100%) rename src/{080-configuring-typescript/176-multiple-tsconfig-json-files.solution.ts => 075-designing-your-types/176-default-type-parameters.solution.ts} (100%) rename src/{080-configuring-typescript/177-extending-from-other-tsconfig-json-files.problem.ts => 075-designing-your-types/177-type-helper-constraints.problem.ts} (100%) rename src/{080-configuring-typescript/177-extending-from-other-tsconfig-json-files.solution.ts => 075-designing-your-types/177-type-helper-constraints.solution.ts} (100%) rename src/{080-configuring-typescript/178-project-references.problem.ts => 075-designing-your-types/178-tighter-version-of-omit.problem.ts} (100%) rename src/{080-configuring-typescript/178-project-references.solution.ts => 075-designing-your-types/178-tighter-version-of-omit.solution.ts} (100%) rename src/{080-configuring-typescript/179-jsx.problem.ts => 075-designing-your-types/179-template-literal-types.problem.ts} (100%) rename src/{080-configuring-typescript/179-jsx.solution.ts => 075-designing-your-types/179-template-literal-types.solution.ts} (100%) rename src/{080-configuring-typescript/180-rules-that-make-up-strict-mode.problem.ts => 075-designing-your-types/180-passing-unions-to-template-literal-types.problem.ts} (100%) rename src/{080-configuring-typescript/180-rules-that-make-up-strict-mode.solution.ts => 075-designing-your-types/180-passing-unions-to-template-literal-types.solution.ts} (100%) rename src/{080-configuring-typescript/181-no-unchecked-indexed-access.problem.ts => 075-designing-your-types/181-mapped-types.problem.ts} (100%) rename src/{080-configuring-typescript/181-no-unchecked-indexed-access.solution.ts => 075-designing-your-types/181-mapped-types.solution.ts} (100%) rename src/{080-configuring-typescript/182-creating-declaration-files-and-declaration-maps.problem.ts => 075-designing-your-types/182-as-in-mapped-types.problem.ts} (100%) rename src/{080-configuring-typescript/182-creating-declaration-files-and-declaration-maps.solution.ts => 075-designing-your-types/182-as-in-mapped-types.solution.ts} (100%) rename src/080-configuring-typescript/{183-setting-up-types-for-node.problem.ts => 183-introduction-to-tsconfig.problem.ts} (100%) rename src/080-configuring-typescript/{183-setting-up-types-for-node.solution.ts => 183-introduction-to-tsconfig.solution.ts} (100%) rename src/080-configuring-typescript/{184-set-up-types-for-simple-scripts.problem.ts => 184-tsconfig-bases.problem.ts} (100%) rename src/080-configuring-typescript/{184-set-up-types-for-simple-scripts.solution.ts => 184-tsconfig-bases.solution.ts} (100%) rename src/080-configuring-typescript/{185-set-up-types-for-test-files.problem.ts => 185-multiple-tsconfig-json-files.problem.ts} (100%) rename src/080-configuring-typescript/{185-set-up-types-for-test-files.solution.ts => 185-multiple-tsconfig-json-files.solution.ts} (100%) rename src/080-configuring-typescript/{186-set-up-types-for-bundled-web-app.problem.ts => 186-extending-from-other-tsconfig-json-files.problem.ts} (100%) rename src/080-configuring-typescript/{186-set-up-types-for-bundled-web-app.solution.ts => 186-extending-from-other-tsconfig-json-files.solution.ts} (100%) rename src/{085-the-utils-folder/187-intro-to-the-utils-folder.problem.ts => 080-configuring-typescript/187-project-references.problem.ts} (100%) rename src/{085-the-utils-folder/187-intro-to-the-utils-folder.solution.ts => 080-configuring-typescript/187-project-references.solution.ts} (100%) rename src/{085-the-utils-folder/188-generic-functions-without-inference.problem.ts => 080-configuring-typescript/188-jsx.problem.ts} (100%) rename src/{085-the-utils-folder/188-generic-functions-without-inference.solution.ts => 080-configuring-typescript/188-jsx.solution.ts} (100%) rename src/{085-the-utils-folder/189-type-parameter-defaults-in-generic-functions.problem.ts => 080-configuring-typescript/189-rules-that-make-up-strict-mode.problem.ts} (100%) rename src/{085-the-utils-folder/189-type-parameter-defaults-in-generic-functions.solution.ts => 080-configuring-typescript/189-rules-that-make-up-strict-mode.solution.ts} (100%) rename src/{085-the-utils-folder/190-type-parameter-constraints-with-generic-functions.problem.ts => 080-configuring-typescript/190-no-unchecked-indexed-access.problem.ts} (100%) rename src/{085-the-utils-folder/190-type-parameter-constraints-with-generic-functions.solution.ts => 080-configuring-typescript/190-no-unchecked-indexed-access.solution.ts} (100%) rename src/{085-the-utils-folder/191-generic-functions-with-inference.problem.ts => 080-configuring-typescript/191-creating-declaration-files-and-declaration-maps.problem.ts} (100%) rename src/{085-the-utils-folder/191-generic-functions-with-inference.solution.ts => 080-configuring-typescript/191-creating-declaration-files-and-declaration-maps.solution.ts} (100%) rename src/{085-the-utils-folder/192-multiple-type-arguments.problem.ts => 080-configuring-typescript/192-setting-up-types-for-node.problem.ts} (100%) rename src/{085-the-utils-folder/192-multiple-type-arguments.solution.ts => 080-configuring-typescript/192-setting-up-types-for-node.solution.ts} (100%) rename src/{085-the-utils-folder/193-create-group-by-function.problem.ts => 080-configuring-typescript/193-set-up-types-for-simple-scripts.problem.ts} (100%) rename src/{085-the-utils-folder/193-create-group-by-function.solution.ts => 080-configuring-typescript/193-set-up-types-for-simple-scripts.solution.ts} (100%) rename src/{085-the-utils-folder/194-type-predicates.problem.ts => 080-configuring-typescript/194-set-up-types-for-test-files.problem.ts} (100%) rename src/{085-the-utils-folder/194-type-predicates.solution.ts => 080-configuring-typescript/194-set-up-types-for-test-files.solution.ts} (100%) rename src/{085-the-utils-folder/195-assertion-functions.problem.ts => 080-configuring-typescript/195-set-up-types-for-bundled-web-app.problem.ts} (100%) rename src/{085-the-utils-folder/195-assertion-functions.solution.ts => 080-configuring-typescript/195-set-up-types-for-bundled-web-app.solution.ts} (100%) rename src/{090-the-style-guide/196-hungarian-notation.problem.ts => 085-the-utils-folder/196-intro-to-the-utils-folder.problem.ts} (100%) rename src/{090-the-style-guide/196-hungarian-notation.solution.ts => 085-the-utils-folder/196-intro-to-the-utils-folder.solution.ts} (100%) rename src/{090-the-style-guide/197-where-to-put-your-types.problem.ts => 085-the-utils-folder/197-generic-functions-without-inference.problem.ts} (100%) rename src/{090-the-style-guide/197-where-to-put-your-types.solution.ts => 085-the-utils-folder/197-generic-functions-without-inference.solution.ts} (100%) rename src/{090-the-style-guide/198-colocation-of-types.problem.ts => 085-the-utils-folder/198-type-parameter-defaults-in-generic-functions.problem.ts} (100%) rename src/{090-the-style-guide/198-colocation-of-types.solution.ts => 085-the-utils-folder/198-type-parameter-defaults-in-generic-functions.solution.ts} (100%) rename src/{095-migrating-from-javascript/199-strict-file-by-file-vs-ramp-up-strictness.problem.ts => 085-the-utils-folder/199-type-parameter-constraints-with-generic-functions.problem.ts} (100%) rename src/{095-migrating-from-javascript/199-strict-file-by-file-vs-ramp-up-strictness.solution.ts => 085-the-utils-folder/199-type-parameter-constraints-with-generic-functions.solution.ts} (100%) rename src/{095-migrating-from-javascript/200-dependencies-first.problem.ts => 085-the-utils-folder/200-generic-functions-with-inference.problem.ts} (100%) rename src/{095-migrating-from-javascript/200-dependencies-first.solution.ts => 085-the-utils-folder/200-generic-functions-with-inference.solution.ts} (100%) rename src/{095-migrating-from-javascript/201-madge.problem.ts => 085-the-utils-folder/201-multiple-type-arguments.problem.ts} (100%) rename src/{095-migrating-from-javascript/201-madge.solution.ts => 085-the-utils-folder/201-multiple-type-arguments.solution.ts} (100%) create mode 100644 src/085-the-utils-folder/202-create-group-by-function.problem.ts create mode 100644 src/085-the-utils-folder/202-create-group-by-function.solution.ts create mode 100644 src/085-the-utils-folder/203-type-predicates.problem.ts create mode 100644 src/085-the-utils-folder/203-type-predicates.solution.ts create mode 100644 src/085-the-utils-folder/204-assertion-functions.problem.ts create mode 100644 src/085-the-utils-folder/204-assertion-functions.solution.ts create mode 100644 src/090-the-style-guide/205-setting-up-eslint.problem.ts create mode 100644 src/090-the-style-guide/205-setting-up-eslint.solution.ts create mode 100644 src/090-the-style-guide/206-hungarian-notation.problem.ts create mode 100644 src/090-the-style-guide/206-hungarian-notation.solution.ts create mode 100644 src/090-the-style-guide/207-where-to-put-your-types.problem.ts create mode 100644 src/090-the-style-guide/207-where-to-put-your-types.solution.ts create mode 100644 src/090-the-style-guide/208-colocation-of-types.problem.ts create mode 100644 src/090-the-style-guide/208-colocation-of-types.solution.ts create mode 100644 src/090-the-style-guide/209-explicit-any-rule-or-not.problem.ts create mode 100644 src/090-the-style-guide/209-explicit-any-rule-or-not.solution.ts create mode 100644 src/090-the-style-guide/210-explicit-return-types-or-not.problem.ts create mode 100644 src/090-the-style-guide/210-explicit-return-types-or-not.solution.ts create mode 100644 src/090-the-style-guide/211-any-vs-ts-ignore-vs-ts-expect-error.problem.ts create mode 100644 src/090-the-style-guide/211-any-vs-ts-ignore-vs-ts-expect-error.solution.ts create mode 100644 src/090-the-style-guide/212-result-type.problem.ts create mode 100644 src/090-the-style-guide/212-result-type.solution.ts create mode 100644 src/095-migrating-from-javascript/213-strict-file-by-file-vs-ramp-up-strictness.problem.ts create mode 100644 src/095-migrating-from-javascript/213-strict-file-by-file-vs-ramp-up-strictness.solution.ts create mode 100644 src/095-migrating-from-javascript/214-dependencies-first.problem.ts create mode 100644 src/095-migrating-from-javascript/214-dependencies-first.solution.ts create mode 100644 src/095-migrating-from-javascript/215-madge.problem.ts create mode 100644 src/095-migrating-from-javascript/215-madge.solution.ts diff --git a/src/016.5-ide-superpowers/041-autocomplete-for-string-literals.problem.ts b/src/015-essential-types-and-annotations/036-typing-array-reduce.problem.ts similarity index 100% rename from src/016.5-ide-superpowers/041-autocomplete-for-string-literals.problem.ts rename to src/015-essential-types-and-annotations/036-typing-array-reduce.problem.ts diff --git a/src/016.5-ide-superpowers/041-autocomplete-for-string-literals.solution.ts b/src/015-essential-types-and-annotations/036-typing-array-reduce.solution.ts similarity index 100% rename from src/016.5-ide-superpowers/041-autocomplete-for-string-literals.solution.ts rename to src/015-essential-types-and-annotations/036-typing-array-reduce.solution.ts diff --git a/src/015-essential-types-and-annotations/036-type-async-functions.problem.ts b/src/015-essential-types-and-annotations/037-type-async-functions.problem.ts similarity index 100% rename from src/015-essential-types-and-annotations/036-type-async-functions.problem.ts rename to src/015-essential-types-and-annotations/037-type-async-functions.problem.ts diff --git a/src/015-essential-types-and-annotations/036-type-async-functions.solution.ts b/src/015-essential-types-and-annotations/037-type-async-functions.solution.ts similarity index 100% rename from src/015-essential-types-and-annotations/036-type-async-functions.solution.ts rename to src/015-essential-types-and-annotations/037-type-async-functions.solution.ts diff --git a/src/016.5-ide-superpowers/037-understand-the-ts-server.explainer.ts b/src/016.5-ide-superpowers/038-understand-the-ts-server.explainer.ts similarity index 100% rename from src/016.5-ide-superpowers/037-understand-the-ts-server.explainer.ts rename to src/016.5-ide-superpowers/038-understand-the-ts-server.explainer.ts diff --git a/src/016.5-ide-superpowers/038-understand-how-to-hover-a-variable-to-see-its-type.problem.ts b/src/016.5-ide-superpowers/039-understand-how-to-hover-a-variable-to-see-its-type.problem.ts similarity index 100% rename from src/016.5-ide-superpowers/038-understand-how-to-hover-a-variable-to-see-its-type.problem.ts rename to src/016.5-ide-superpowers/039-understand-how-to-hover-a-variable-to-see-its-type.problem.ts diff --git a/src/016.5-ide-superpowers/038-understand-how-to-hover-a-variable-to-see-its-type.solution.ts b/src/016.5-ide-superpowers/039-understand-how-to-hover-a-variable-to-see-its-type.solution.ts similarity index 100% rename from src/016.5-ide-superpowers/038-understand-how-to-hover-a-variable-to-see-its-type.solution.ts rename to src/016.5-ide-superpowers/039-understand-how-to-hover-a-variable-to-see-its-type.solution.ts diff --git a/src/016.5-ide-superpowers/039-hovering-intersections-and-interfaces.problem.ts b/src/016.5-ide-superpowers/040-hovering-intersections-and-interfaces.problem.ts similarity index 100% rename from src/016.5-ide-superpowers/039-hovering-intersections-and-interfaces.problem.ts rename to src/016.5-ide-superpowers/040-hovering-intersections-and-interfaces.problem.ts diff --git a/src/016.5-ide-superpowers/040-autocomplete-for-object-properties.problem.ts b/src/016.5-ide-superpowers/041-autocomplete-for-object-properties.problem.ts similarity index 100% rename from src/016.5-ide-superpowers/040-autocomplete-for-object-properties.problem.ts rename to src/016.5-ide-superpowers/041-autocomplete-for-object-properties.problem.ts diff --git a/src/016.5-ide-superpowers/040-autocomplete-for-object-properties.solution.ts b/src/016.5-ide-superpowers/041-autocomplete-for-object-properties.solution.ts similarity index 100% rename from src/016.5-ide-superpowers/040-autocomplete-for-object-properties.solution.ts rename to src/016.5-ide-superpowers/041-autocomplete-for-object-properties.solution.ts diff --git a/src/016.5-ide-superpowers/042-autocomplete-for-jsx.problem.ts b/src/016.5-ide-superpowers/042-autocomplete-for-string-literals.problem.ts similarity index 100% rename from src/016.5-ide-superpowers/042-autocomplete-for-jsx.problem.ts rename to src/016.5-ide-superpowers/042-autocomplete-for-string-literals.problem.ts diff --git a/src/016.5-ide-superpowers/042-autocomplete-for-jsx.solution.ts b/src/016.5-ide-superpowers/042-autocomplete-for-string-literals.solution.ts similarity index 100% rename from src/016.5-ide-superpowers/042-autocomplete-for-jsx.solution.ts rename to src/016.5-ide-superpowers/042-autocomplete-for-string-literals.solution.ts diff --git a/src/016.5-ide-superpowers/043-basics-of-errors.problem.ts b/src/016.5-ide-superpowers/043-autocomplete-for-jsx.problem.ts similarity index 100% rename from src/016.5-ide-superpowers/043-basics-of-errors.problem.ts rename to src/016.5-ide-superpowers/043-autocomplete-for-jsx.problem.ts diff --git a/src/016.5-ide-superpowers/043-basics-of-errors.solution.ts b/src/016.5-ide-superpowers/043-autocomplete-for-jsx.solution.ts similarity index 100% rename from src/016.5-ide-superpowers/043-basics-of-errors.solution.ts rename to src/016.5-ide-superpowers/043-autocomplete-for-jsx.solution.ts diff --git a/src/016.5-ide-superpowers/044-go-to-definition.problem.ts b/src/016.5-ide-superpowers/044-basics-of-errors.problem.ts similarity index 100% rename from src/016.5-ide-superpowers/044-go-to-definition.problem.ts rename to src/016.5-ide-superpowers/044-basics-of-errors.problem.ts diff --git a/src/016.5-ide-superpowers/044-go-to-definition.solution.ts b/src/016.5-ide-superpowers/044-basics-of-errors.solution.ts similarity index 100% rename from src/016.5-ide-superpowers/044-go-to-definition.solution.ts rename to src/016.5-ide-superpowers/044-basics-of-errors.solution.ts diff --git a/src/016.5-ide-superpowers/045-find-all-references.problem.ts b/src/016.5-ide-superpowers/045-go-to-definition.problem.ts similarity index 100% rename from src/016.5-ide-superpowers/045-find-all-references.problem.ts rename to src/016.5-ide-superpowers/045-go-to-definition.problem.ts diff --git a/src/016.5-ide-superpowers/045-find-all-references.solution.ts b/src/016.5-ide-superpowers/045-go-to-definition.solution.ts similarity index 100% rename from src/016.5-ide-superpowers/045-find-all-references.solution.ts rename to src/016.5-ide-superpowers/045-go-to-definition.solution.ts diff --git a/src/016.5-ide-superpowers/046-rename-symbol.problem.ts b/src/016.5-ide-superpowers/046-find-all-references.problem.ts similarity index 100% rename from src/016.5-ide-superpowers/046-rename-symbol.problem.ts rename to src/016.5-ide-superpowers/046-find-all-references.problem.ts diff --git a/src/016.5-ide-superpowers/046-rename-symbol.solution.ts b/src/016.5-ide-superpowers/046-find-all-references.solution.ts similarity index 100% rename from src/016.5-ide-superpowers/046-rename-symbol.solution.ts rename to src/016.5-ide-superpowers/046-find-all-references.solution.ts diff --git a/src/016.5-ide-superpowers/047-resetting-the-typescript-server.problem.ts b/src/016.5-ide-superpowers/047-rename-symbol.problem.ts similarity index 100% rename from src/016.5-ide-superpowers/047-resetting-the-typescript-server.problem.ts rename to src/016.5-ide-superpowers/047-rename-symbol.problem.ts diff --git a/src/016.5-ide-superpowers/047-resetting-the-typescript-server.solution.ts b/src/016.5-ide-superpowers/047-rename-symbol.solution.ts similarity index 100% rename from src/016.5-ide-superpowers/047-resetting-the-typescript-server.solution.ts rename to src/016.5-ide-superpowers/047-rename-symbol.solution.ts diff --git a/src/020-objects/073-record-type-with-union-as-keys.problem.ts b/src/016.5-ide-superpowers/048-resetting-the-typescript-server.problem.ts similarity index 100% rename from src/020-objects/073-record-type-with-union-as-keys.problem.ts rename to src/016.5-ide-superpowers/048-resetting-the-typescript-server.problem.ts diff --git a/src/020-objects/073-record-type-with-union-as-keys.solution.ts b/src/016.5-ide-superpowers/048-resetting-the-typescript-server.solution.ts similarity index 100% rename from src/020-objects/073-record-type-with-union-as-keys.solution.ts rename to src/016.5-ide-superpowers/048-resetting-the-typescript-server.solution.ts diff --git a/src/018-unions-and-narrowing/048-introduction-to-unions.problem.ts b/src/018-unions-and-narrowing/049-introduction-to-unions.problem.ts similarity index 100% rename from src/018-unions-and-narrowing/048-introduction-to-unions.problem.ts rename to src/018-unions-and-narrowing/049-introduction-to-unions.problem.ts diff --git a/src/018-unions-and-narrowing/048-introduction-to-unions.solution.ts b/src/018-unions-and-narrowing/049-introduction-to-unions.solution.ts similarity index 100% rename from src/018-unions-and-narrowing/048-introduction-to-unions.solution.ts rename to src/018-unions-and-narrowing/049-introduction-to-unions.solution.ts diff --git a/src/018-unions-and-narrowing/049-literal-types.problem.ts b/src/018-unions-and-narrowing/050-literal-types.problem.ts similarity index 100% rename from src/018-unions-and-narrowing/049-literal-types.problem.ts rename to src/018-unions-and-narrowing/050-literal-types.problem.ts diff --git a/src/018-unions-and-narrowing/049-literal-types.solution.1.ts b/src/018-unions-and-narrowing/050-literal-types.solution.1.ts similarity index 100% rename from src/018-unions-and-narrowing/049-literal-types.solution.1.ts rename to src/018-unions-and-narrowing/050-literal-types.solution.1.ts diff --git a/src/018-unions-and-narrowing/049-literal-types.solution.2.ts b/src/018-unions-and-narrowing/050-literal-types.solution.2.ts similarity index 100% rename from src/018-unions-and-narrowing/049-literal-types.solution.2.ts rename to src/018-unions-and-narrowing/050-literal-types.solution.2.ts diff --git a/src/018-unions-and-narrowing/050-combining-unions.problem.ts b/src/018-unions-and-narrowing/051-combining-unions.problem.ts similarity index 100% rename from src/018-unions-and-narrowing/050-combining-unions.problem.ts rename to src/018-unions-and-narrowing/051-combining-unions.problem.ts diff --git a/src/018-unions-and-narrowing/050-combining-unions.solution.ts b/src/018-unions-and-narrowing/051-combining-unions.solution.ts similarity index 100% rename from src/018-unions-and-narrowing/050-combining-unions.solution.ts rename to src/018-unions-and-narrowing/051-combining-unions.solution.ts diff --git a/src/018-unions-and-narrowing/051-how-big-can-a-union-be.explainer.ts b/src/018-unions-and-narrowing/052-how-big-can-a-union-be.explainer.ts similarity index 100% rename from src/018-unions-and-narrowing/051-how-big-can-a-union-be.explainer.ts rename to src/018-unions-and-narrowing/052-how-big-can-a-union-be.explainer.ts diff --git a/src/018-unions-and-narrowing/052-literals-vs-wider-types.explainer.ts b/src/018-unions-and-narrowing/053-literals-vs-wider-types.explainer.ts similarity index 100% rename from src/018-unions-and-narrowing/052-literals-vs-wider-types.explainer.ts rename to src/018-unions-and-narrowing/053-literals-vs-wider-types.explainer.ts diff --git a/src/018-unions-and-narrowing/053-narrowing-unions-with-typeof.explainer.ts b/src/018-unions-and-narrowing/054-narrowing-unions-with-typeof.explainer.ts similarity index 100% rename from src/018-unions-and-narrowing/053-narrowing-unions-with-typeof.explainer.ts rename to src/018-unions-and-narrowing/054-narrowing-unions-with-typeof.explainer.ts diff --git a/src/018-unions-and-narrowing/054-narrowing-with-if-statements.problem.ts b/src/018-unions-and-narrowing/055-narrowing-with-if-statements.problem.ts similarity index 100% rename from src/018-unions-and-narrowing/054-narrowing-with-if-statements.problem.ts rename to src/018-unions-and-narrowing/055-narrowing-with-if-statements.problem.ts diff --git a/src/018-unions-and-narrowing/054-narrowing-with-if-statements.solution.1.ts b/src/018-unions-and-narrowing/055-narrowing-with-if-statements.solution.1.ts similarity index 100% rename from src/018-unions-and-narrowing/054-narrowing-with-if-statements.solution.1.ts rename to src/018-unions-and-narrowing/055-narrowing-with-if-statements.solution.1.ts diff --git a/src/018-unions-and-narrowing/054-narrowing-with-if-statements.solution.2.ts b/src/018-unions-and-narrowing/055-narrowing-with-if-statements.solution.2.ts similarity index 100% rename from src/018-unions-and-narrowing/054-narrowing-with-if-statements.solution.2.ts rename to src/018-unions-and-narrowing/055-narrowing-with-if-statements.solution.2.ts diff --git a/src/018-unions-and-narrowing/054-narrowing-with-if-statements.solution.3.ts b/src/018-unions-and-narrowing/055-narrowing-with-if-statements.solution.3.ts similarity index 100% rename from src/018-unions-and-narrowing/054-narrowing-with-if-statements.solution.3.ts rename to src/018-unions-and-narrowing/055-narrowing-with-if-statements.solution.3.ts diff --git a/src/018-unions-and-narrowing/054-narrowing-with-if-statements.solution.4.ts b/src/018-unions-and-narrowing/055-narrowing-with-if-statements.solution.4.ts similarity index 100% rename from src/018-unions-and-narrowing/054-narrowing-with-if-statements.solution.4.ts rename to src/018-unions-and-narrowing/055-narrowing-with-if-statements.solution.4.ts diff --git a/src/018-unions-and-narrowing/054-narrowing-with-if-statements.solution.5.ts b/src/018-unions-and-narrowing/055-narrowing-with-if-statements.solution.5.ts similarity index 100% rename from src/018-unions-and-narrowing/054-narrowing-with-if-statements.solution.5.ts rename to src/018-unions-and-narrowing/055-narrowing-with-if-statements.solution.5.ts diff --git a/src/018-unions-and-narrowing/055-narrowing-with-boolean-wont-work.explainer.ts b/src/018-unions-and-narrowing/056-narrowing-with-boolean-wont-work.explainer.ts similarity index 100% rename from src/018-unions-and-narrowing/055-narrowing-with-boolean-wont-work.explainer.ts rename to src/018-unions-and-narrowing/056-narrowing-with-boolean-wont-work.explainer.ts diff --git a/src/018-unions-and-narrowing/056-throwing-errors-to-narrow.problem.ts b/src/018-unions-and-narrowing/057-throwing-errors-to-narrow.problem.ts similarity index 100% rename from src/018-unions-and-narrowing/056-throwing-errors-to-narrow.problem.ts rename to src/018-unions-and-narrowing/057-throwing-errors-to-narrow.problem.ts diff --git a/src/018-unions-and-narrowing/056-throwing-errors-to-narrow.solution.ts b/src/018-unions-and-narrowing/057-throwing-errors-to-narrow.solution.ts similarity index 100% rename from src/018-unions-and-narrowing/056-throwing-errors-to-narrow.solution.ts rename to src/018-unions-and-narrowing/057-throwing-errors-to-narrow.solution.ts diff --git a/src/018-unions-and-narrowing/057-narrowing-with-instanceof-statements.problem.ts b/src/018-unions-and-narrowing/058-narrowing-with-instanceof-statements.problem.ts similarity index 100% rename from src/018-unions-and-narrowing/057-narrowing-with-instanceof-statements.problem.ts rename to src/018-unions-and-narrowing/058-narrowing-with-instanceof-statements.problem.ts diff --git a/src/018-unions-and-narrowing/057-narrowing-with-instanceof-statements.solution.ts b/src/018-unions-and-narrowing/058-narrowing-with-instanceof-statements.solution.ts similarity index 100% rename from src/018-unions-and-narrowing/057-narrowing-with-instanceof-statements.solution.ts rename to src/018-unions-and-narrowing/058-narrowing-with-instanceof-statements.solution.ts diff --git a/src/018-unions-and-narrowing/058-narrowing-with-in-statements.problem.ts b/src/018-unions-and-narrowing/059-narrowing-with-in-statements.problem.ts similarity index 100% rename from src/018-unions-and-narrowing/058-narrowing-with-in-statements.problem.ts rename to src/018-unions-and-narrowing/059-narrowing-with-in-statements.problem.ts diff --git a/src/018-unions-and-narrowing/058-narrowing-with-in-statements.solution.ts b/src/018-unions-and-narrowing/059-narrowing-with-in-statements.solution.ts similarity index 100% rename from src/018-unions-and-narrowing/058-narrowing-with-in-statements.solution.ts rename to src/018-unions-and-narrowing/059-narrowing-with-in-statements.solution.ts diff --git a/src/018-unions-and-narrowing/059-narrowing-unknown-to-a-value.problem.ts b/src/018-unions-and-narrowing/060-narrowing-unknown-to-a-value.problem.ts similarity index 100% rename from src/018-unions-and-narrowing/059-narrowing-unknown-to-a-value.problem.ts rename to src/018-unions-and-narrowing/060-narrowing-unknown-to-a-value.problem.ts diff --git a/src/018-unions-and-narrowing/059-narrowing-unknown-to-a-value.solution.ts b/src/018-unions-and-narrowing/060-narrowing-unknown-to-a-value.solution.ts similarity index 100% rename from src/018-unions-and-narrowing/059-narrowing-unknown-to-a-value.solution.ts rename to src/018-unions-and-narrowing/060-narrowing-unknown-to-a-value.solution.ts diff --git a/src/018-unions-and-narrowing/060-narrowing-with-ternaries.problem.ts b/src/018-unions-and-narrowing/061-narrowing-with-ternaries.problem.ts similarity index 100% rename from src/018-unions-and-narrowing/060-narrowing-with-ternaries.problem.ts rename to src/018-unions-and-narrowing/061-narrowing-with-ternaries.problem.ts diff --git a/src/018-unions-and-narrowing/060-narrowing-with-ternaries.solution.ts b/src/018-unions-and-narrowing/061-narrowing-with-ternaries.solution.ts similarity index 100% rename from src/018-unions-and-narrowing/060-narrowing-with-ternaries.solution.ts rename to src/018-unions-and-narrowing/061-narrowing-with-ternaries.solution.ts diff --git a/src/018-unions-and-narrowing/061-narrowing-with-nullish-coalescing.problem.ts b/src/018-unions-and-narrowing/062-narrowing-with-nullish-coalescing.problem.ts similarity index 100% rename from src/018-unions-and-narrowing/061-narrowing-with-nullish-coalescing.problem.ts rename to src/018-unions-and-narrowing/062-narrowing-with-nullish-coalescing.problem.ts diff --git a/src/018-unions-and-narrowing/061-narrowing-with-nullish-coalescing.solution.ts b/src/018-unions-and-narrowing/062-narrowing-with-nullish-coalescing.solution.ts similarity index 100% rename from src/018-unions-and-narrowing/061-narrowing-with-nullish-coalescing.solution.ts rename to src/018-unions-and-narrowing/062-narrowing-with-nullish-coalescing.solution.ts diff --git a/src/028-mutability/083-let-and-const-inference.problem.ts b/src/018-unions-and-narrowing/063-evolving-any.problem.ts similarity index 100% rename from src/028-mutability/083-let-and-const-inference.problem.ts rename to src/018-unions-and-narrowing/063-evolving-any.problem.ts diff --git a/src/028-mutability/083-let-and-const-inference.solution.ts b/src/018-unions-and-narrowing/063-evolving-any.solution.ts similarity index 100% rename from src/028-mutability/083-let-and-const-inference.solution.ts rename to src/018-unions-and-narrowing/063-evolving-any.solution.ts diff --git a/src/028-mutability/084-object-property-inference.problem.ts b/src/018-unions-and-narrowing/064-evolving-any-arrays.problem.ts similarity index 100% rename from src/028-mutability/084-object-property-inference.problem.ts rename to src/018-unions-and-narrowing/064-evolving-any-arrays.problem.ts diff --git a/src/028-mutability/084-object-property-inference.solution.ts b/src/018-unions-and-narrowing/064-evolving-any-arrays.solution.ts similarity index 100% rename from src/028-mutability/084-object-property-inference.solution.ts rename to src/018-unions-and-narrowing/064-evolving-any-arrays.solution.ts diff --git a/src/018-unions-and-narrowing/062-intro-to-discriminated-unions.problem.ts b/src/018-unions-and-narrowing/065-intro-to-discriminated-unions.problem.ts similarity index 100% rename from src/018-unions-and-narrowing/062-intro-to-discriminated-unions.problem.ts rename to src/018-unions-and-narrowing/065-intro-to-discriminated-unions.problem.ts diff --git a/src/018-unions-and-narrowing/062-intro-to-discriminated-unions.solution.ts b/src/018-unions-and-narrowing/065-intro-to-discriminated-unions.solution.ts similarity index 100% rename from src/018-unions-and-narrowing/062-intro-to-discriminated-unions.solution.ts rename to src/018-unions-and-narrowing/065-intro-to-discriminated-unions.solution.ts diff --git a/src/018-unions-and-narrowing/063-destructuring-a-discriminated-union.problem.ts b/src/018-unions-and-narrowing/066-destructuring-a-discriminated-union.problem.ts similarity index 100% rename from src/018-unions-and-narrowing/063-destructuring-a-discriminated-union.problem.ts rename to src/018-unions-and-narrowing/066-destructuring-a-discriminated-union.problem.ts diff --git a/src/018-unions-and-narrowing/063-destructuring-a-discriminated-union.solution.ts b/src/018-unions-and-narrowing/066-destructuring-a-discriminated-union.solution.ts similarity index 100% rename from src/018-unions-and-narrowing/063-destructuring-a-discriminated-union.solution.ts rename to src/018-unions-and-narrowing/066-destructuring-a-discriminated-union.solution.ts diff --git a/src/018-unions-and-narrowing/064-narrowing-a-discriminated-union-with-a-switch-statement.problem.ts b/src/018-unions-and-narrowing/067-narrowing-a-discriminated-union-with-a-switch-statement.problem.ts similarity index 100% rename from src/018-unions-and-narrowing/064-narrowing-a-discriminated-union-with-a-switch-statement.problem.ts rename to src/018-unions-and-narrowing/067-narrowing-a-discriminated-union-with-a-switch-statement.problem.ts diff --git a/src/018-unions-and-narrowing/064-narrowing-a-discriminated-union-with-a-switch-statement.solution.ts b/src/018-unions-and-narrowing/067-narrowing-a-discriminated-union-with-a-switch-statement.solution.ts similarity index 100% rename from src/018-unions-and-narrowing/064-narrowing-a-discriminated-union-with-a-switch-statement.solution.ts rename to src/018-unions-and-narrowing/067-narrowing-a-discriminated-union-with-a-switch-statement.solution.ts diff --git a/src/018-unions-and-narrowing/065-narrowing-with-switch-true.explainer.ts b/src/018-unions-and-narrowing/068-narrowing-with-switch-true.explainer.ts similarity index 100% rename from src/018-unions-and-narrowing/065-narrowing-with-switch-true.explainer.ts rename to src/018-unions-and-narrowing/068-narrowing-with-switch-true.explainer.ts diff --git a/src/018-unions-and-narrowing/066-destructuring-a-discriminated-tuple.problem.ts b/src/018-unions-and-narrowing/069-destructuring-a-discriminated-tuple.problem.ts similarity index 100% rename from src/018-unions-and-narrowing/066-destructuring-a-discriminated-tuple.problem.ts rename to src/018-unions-and-narrowing/069-destructuring-a-discriminated-tuple.problem.ts diff --git a/src/018-unions-and-narrowing/066-destructuring-a-discriminated-tuple.solution.ts b/src/018-unions-and-narrowing/069-destructuring-a-discriminated-tuple.solution.ts similarity index 100% rename from src/018-unions-and-narrowing/066-destructuring-a-discriminated-tuple.solution.ts rename to src/018-unions-and-narrowing/069-destructuring-a-discriminated-tuple.solution.ts diff --git a/src/018-unions-and-narrowing/067-discriminated-booleans.problem.ts b/src/018-unions-and-narrowing/070-discriminated-booleans.problem.ts similarity index 100% rename from src/018-unions-and-narrowing/067-discriminated-booleans.problem.ts rename to src/018-unions-and-narrowing/070-discriminated-booleans.problem.ts diff --git a/src/018-unions-and-narrowing/067-discriminated-booleans.solution.ts b/src/018-unions-and-narrowing/070-discriminated-booleans.solution.ts similarity index 100% rename from src/018-unions-and-narrowing/067-discriminated-booleans.solution.ts rename to src/018-unions-and-narrowing/070-discriminated-booleans.solution.ts diff --git a/src/028-mutability/086-readonly-object-properties.problem.ts b/src/018-unions-and-narrowing/071-adding-defaults-to-discriminated-union.problem.ts similarity index 100% rename from src/028-mutability/086-readonly-object-properties.problem.ts rename to src/018-unions-and-narrowing/071-adding-defaults-to-discriminated-union.problem.ts diff --git a/src/028-mutability/086-readonly-object-properties.solution.ts b/src/018-unions-and-narrowing/071-adding-defaults-to-discriminated-union.solution.ts similarity index 100% rename from src/028-mutability/086-readonly-object-properties.solution.ts rename to src/018-unions-and-narrowing/071-adding-defaults-to-discriminated-union.solution.ts diff --git a/src/020-objects/068-extend-object-using-intersections.problem.ts b/src/020-objects/072-extend-object-using-intersections.problem.ts similarity index 100% rename from src/020-objects/068-extend-object-using-intersections.problem.ts rename to src/020-objects/072-extend-object-using-intersections.problem.ts diff --git a/src/020-objects/068-extend-object-using-intersections.solution.ts b/src/020-objects/072-extend-object-using-intersections.solution.ts similarity index 100% rename from src/020-objects/068-extend-object-using-intersections.solution.ts rename to src/020-objects/072-extend-object-using-intersections.solution.ts diff --git a/src/020-objects/069-extend-object-using-interfaces.problem.ts b/src/020-objects/073-extend-object-using-interfaces.problem.ts similarity index 100% rename from src/020-objects/069-extend-object-using-interfaces.problem.ts rename to src/020-objects/073-extend-object-using-interfaces.problem.ts diff --git a/src/020-objects/069-extend-object-using-interfaces.solution.1.ts b/src/020-objects/073-extend-object-using-interfaces.solution.1.ts similarity index 100% rename from src/020-objects/069-extend-object-using-interfaces.solution.1.ts rename to src/020-objects/073-extend-object-using-interfaces.solution.1.ts diff --git a/src/020-objects/069-extend-object-using-interfaces.solution.2.ts b/src/020-objects/073-extend-object-using-interfaces.solution.2.ts similarity index 100% rename from src/020-objects/069-extend-object-using-interfaces.solution.2.ts rename to src/020-objects/073-extend-object-using-interfaces.solution.2.ts diff --git a/src/020-objects/070-compare-between-intersections-and-interfaces.explainer.ts b/src/020-objects/074-compare-between-intersections-and-interfaces.explainer.ts similarity index 100% rename from src/020-objects/070-compare-between-intersections-and-interfaces.explainer.ts rename to src/020-objects/074-compare-between-intersections-and-interfaces.explainer.ts diff --git a/src/020-objects/071-index-signatures.problem.ts b/src/020-objects/075-index-signatures.problem.ts similarity index 100% rename from src/020-objects/071-index-signatures.problem.ts rename to src/020-objects/075-index-signatures.problem.ts diff --git a/src/020-objects/071-index-signatures.solution.1.ts b/src/020-objects/075-index-signatures.solution.1.ts similarity index 100% rename from src/020-objects/071-index-signatures.solution.1.ts rename to src/020-objects/075-index-signatures.solution.1.ts diff --git a/src/020-objects/071-index-signatures.solution.2.ts b/src/020-objects/075-index-signatures.solution.2.ts similarity index 100% rename from src/020-objects/071-index-signatures.solution.2.ts rename to src/020-objects/075-index-signatures.solution.2.ts diff --git a/src/020-objects/071-index-signatures.solution.3.ts b/src/020-objects/075-index-signatures.solution.3.ts similarity index 100% rename from src/020-objects/071-index-signatures.solution.3.ts rename to src/020-objects/075-index-signatures.solution.3.ts diff --git a/src/020-objects/071-index-signatures.solution.4.ts b/src/020-objects/075-index-signatures.solution.4.ts similarity index 100% rename from src/020-objects/071-index-signatures.solution.4.ts rename to src/020-objects/075-index-signatures.solution.4.ts diff --git a/src/020-objects/072-index-signatures-with-defined-keys.problem.ts b/src/020-objects/076-index-signatures-with-defined-keys.problem.ts similarity index 100% rename from src/020-objects/072-index-signatures-with-defined-keys.problem.ts rename to src/020-objects/076-index-signatures-with-defined-keys.problem.ts diff --git a/src/020-objects/072-index-signatures-with-defined-keys.solution.1.ts b/src/020-objects/076-index-signatures-with-defined-keys.solution.1.ts similarity index 100% rename from src/020-objects/072-index-signatures-with-defined-keys.solution.1.ts rename to src/020-objects/076-index-signatures-with-defined-keys.solution.1.ts diff --git a/src/020-objects/072-index-signatures-with-defined-keys.solution.2.ts b/src/020-objects/076-index-signatures-with-defined-keys.solution.2.ts similarity index 100% rename from src/020-objects/072-index-signatures-with-defined-keys.solution.2.ts rename to src/020-objects/076-index-signatures-with-defined-keys.solution.2.ts diff --git a/src/028-mutability/087-intro-to-as-const.problem.ts b/src/020-objects/077-record-type-with-union-as-keys.problem.ts similarity index 100% rename from src/028-mutability/087-intro-to-as-const.problem.ts rename to src/020-objects/077-record-type-with-union-as-keys.problem.ts diff --git a/src/028-mutability/087-intro-to-as-const.solution.ts b/src/020-objects/077-record-type-with-union-as-keys.solution.ts similarity index 100% rename from src/028-mutability/087-intro-to-as-const.solution.ts rename to src/020-objects/077-record-type-with-union-as-keys.solution.ts diff --git a/src/020-objects/074-declaration-merging-of-interfaces.problem.ts b/src/020-objects/078-declaration-merging-of-interfaces.problem.ts similarity index 100% rename from src/020-objects/074-declaration-merging-of-interfaces.problem.ts rename to src/020-objects/078-declaration-merging-of-interfaces.problem.ts diff --git a/src/020-objects/074-declaration-merging-of-interfaces.solution.ts b/src/020-objects/078-declaration-merging-of-interfaces.solution.ts similarity index 100% rename from src/020-objects/074-declaration-merging-of-interfaces.solution.ts rename to src/020-objects/078-declaration-merging-of-interfaces.solution.ts diff --git a/src/020-objects/075-pick-type-helper.problem.ts b/src/020-objects/079-pick-type-helper.problem.ts similarity index 100% rename from src/020-objects/075-pick-type-helper.problem.ts rename to src/020-objects/079-pick-type-helper.problem.ts diff --git a/src/020-objects/075-pick-type-helper.solution.1.ts b/src/020-objects/079-pick-type-helper.solution.1.ts similarity index 100% rename from src/020-objects/075-pick-type-helper.solution.1.ts rename to src/020-objects/079-pick-type-helper.solution.1.ts diff --git a/src/020-objects/075-pick-type-helper.solution.2.ts b/src/020-objects/079-pick-type-helper.solution.2.ts similarity index 100% rename from src/020-objects/075-pick-type-helper.solution.2.ts rename to src/020-objects/079-pick-type-helper.solution.2.ts diff --git a/src/020-objects/076-common-keys-of-unions-of-objects.problem.ts b/src/020-objects/080-common-keys-of-unions-of-objects.problem.ts similarity index 100% rename from src/020-objects/076-common-keys-of-unions-of-objects.problem.ts rename to src/020-objects/080-common-keys-of-unions-of-objects.problem.ts diff --git a/src/020-objects/076-common-keys-of-unions-of-objects.solution.ts b/src/020-objects/080-common-keys-of-unions-of-objects.solution.ts similarity index 100% rename from src/020-objects/076-common-keys-of-unions-of-objects.solution.ts rename to src/020-objects/080-common-keys-of-unions-of-objects.solution.ts diff --git a/src/020-objects/077-omit-type-helper.problem.ts b/src/020-objects/081-omit-type-helper.problem.ts similarity index 100% rename from src/020-objects/077-omit-type-helper.problem.ts rename to src/020-objects/081-omit-type-helper.problem.ts diff --git a/src/020-objects/077-omit-type-helper.solution.1.ts b/src/020-objects/081-omit-type-helper.solution.1.ts similarity index 100% rename from src/020-objects/077-omit-type-helper.solution.1.ts rename to src/020-objects/081-omit-type-helper.solution.1.ts diff --git a/src/020-objects/077-omit-type-helper.solution.2.ts b/src/020-objects/081-omit-type-helper.solution.2.ts similarity index 100% rename from src/020-objects/077-omit-type-helper.solution.2.ts rename to src/020-objects/081-omit-type-helper.solution.2.ts diff --git a/src/020-objects/078-no-autocomplete-on-omit.explainer.ts b/src/020-objects/082-no-autocomplete-on-omit.explainer.ts similarity index 100% rename from src/020-objects/078-no-autocomplete-on-omit.explainer.ts rename to src/020-objects/082-no-autocomplete-on-omit.explainer.ts diff --git a/src/020-objects/079-omit-cant-distribute.explainer.1.ts b/src/020-objects/083-omit-cant-distribute.explainer.1.ts similarity index 100% rename from src/020-objects/079-omit-cant-distribute.explainer.1.ts rename to src/020-objects/083-omit-cant-distribute.explainer.1.ts diff --git a/src/020-objects/079-omit-cant-distribute.explainer.2.ts b/src/020-objects/083-omit-cant-distribute.explainer.2.ts similarity index 100% rename from src/020-objects/079-omit-cant-distribute.explainer.2.ts rename to src/020-objects/083-omit-cant-distribute.explainer.2.ts diff --git a/src/020-objects/080-omit-or-pick-more-than-one-thing.problem.ts b/src/020-objects/084-omit-or-pick-more-than-one-thing.problem.ts similarity index 100% rename from src/020-objects/080-omit-or-pick-more-than-one-thing.problem.ts rename to src/020-objects/084-omit-or-pick-more-than-one-thing.problem.ts diff --git a/src/020-objects/080-omit-or-pick-more-than-one-thing.solution.1.ts b/src/020-objects/084-omit-or-pick-more-than-one-thing.solution.1.ts similarity index 100% rename from src/020-objects/080-omit-or-pick-more-than-one-thing.solution.1.ts rename to src/020-objects/084-omit-or-pick-more-than-one-thing.solution.1.ts diff --git a/src/020-objects/080-omit-or-pick-more-than-one-thing.solution.2.ts b/src/020-objects/084-omit-or-pick-more-than-one-thing.solution.2.ts similarity index 100% rename from src/020-objects/080-omit-or-pick-more-than-one-thing.solution.2.ts rename to src/020-objects/084-omit-or-pick-more-than-one-thing.solution.2.ts diff --git a/src/020-objects/081-partial-type-helper.problem.ts b/src/020-objects/085-partial-type-helper.problem.ts similarity index 100% rename from src/020-objects/081-partial-type-helper.problem.ts rename to src/020-objects/085-partial-type-helper.problem.ts diff --git a/src/020-objects/081-partial-type-helper.solution.ts b/src/020-objects/085-partial-type-helper.solution.ts similarity index 100% rename from src/020-objects/081-partial-type-helper.solution.ts rename to src/020-objects/085-partial-type-helper.solution.ts diff --git a/src/020-objects/082-required-type-helper.explainer.ts b/src/020-objects/086-required-type-helper.explainer.ts similarity index 100% rename from src/020-objects/082-required-type-helper.explainer.ts rename to src/020-objects/086-required-type-helper.explainer.ts diff --git a/src/028-mutability/088-as-const-vs-object-freeze.problem.ts b/src/028-mutability/087-let-and-const-inference.problem.ts similarity index 100% rename from src/028-mutability/088-as-const-vs-object-freeze.problem.ts rename to src/028-mutability/087-let-and-const-inference.problem.ts diff --git a/src/028-mutability/088-as-const-vs-object-freeze.solution.ts b/src/028-mutability/087-let-and-const-inference.solution.ts similarity index 100% rename from src/028-mutability/088-as-const-vs-object-freeze.solution.ts rename to src/028-mutability/087-let-and-const-inference.solution.ts diff --git a/src/028-mutability/089-readonly-arrays.problem.ts b/src/028-mutability/088-object-property-inference.problem.ts similarity index 100% rename from src/028-mutability/089-readonly-arrays.problem.ts rename to src/028-mutability/088-object-property-inference.problem.ts diff --git a/src/028-mutability/089-readonly-arrays.solution.ts b/src/028-mutability/088-object-property-inference.solution.ts similarity index 100% rename from src/028-mutability/089-readonly-arrays.solution.ts rename to src/028-mutability/088-object-property-inference.solution.ts diff --git a/src/028-mutability/085-narrowing-in-different-scopes.problem.ts b/src/028-mutability/089-narrowing-in-different-scopes.problem.ts similarity index 100% rename from src/028-mutability/085-narrowing-in-different-scopes.problem.ts rename to src/028-mutability/089-narrowing-in-different-scopes.problem.ts diff --git a/src/028-mutability/085-narrowing-in-different-scopes.solution.1.ts b/src/028-mutability/089-narrowing-in-different-scopes.solution.1.ts similarity index 100% rename from src/028-mutability/085-narrowing-in-different-scopes.solution.1.ts rename to src/028-mutability/089-narrowing-in-different-scopes.solution.1.ts diff --git a/src/028-mutability/085-narrowing-in-different-scopes.solution.2.ts b/src/028-mutability/089-narrowing-in-different-scopes.solution.2.ts similarity index 100% rename from src/028-mutability/085-narrowing-in-different-scopes.solution.2.ts rename to src/028-mutability/089-narrowing-in-different-scopes.solution.2.ts diff --git a/src/028-mutability/090-includes-on-readonly-arrays.problem.ts b/src/028-mutability/090-readonly-object-properties.problem.ts similarity index 100% rename from src/028-mutability/090-includes-on-readonly-arrays.problem.ts rename to src/028-mutability/090-readonly-object-properties.problem.ts diff --git a/src/028-mutability/090-includes-on-readonly-arrays.solution.ts b/src/028-mutability/090-readonly-object-properties.solution.ts similarity index 100% rename from src/028-mutability/090-includes-on-readonly-arrays.solution.ts rename to src/028-mutability/090-readonly-object-properties.solution.ts diff --git a/src/028-mutability/091-readonly-arrays-vs-mutable-arrays.problem.ts b/src/028-mutability/091-intro-to-as-const.problem.ts similarity index 100% rename from src/028-mutability/091-readonly-arrays-vs-mutable-arrays.problem.ts rename to src/028-mutability/091-intro-to-as-const.problem.ts diff --git a/src/028-mutability/091-readonly-arrays-vs-mutable-arrays.solution.ts b/src/028-mutability/091-intro-to-as-const.solution.ts similarity index 100% rename from src/028-mutability/091-readonly-arrays-vs-mutable-arrays.solution.ts rename to src/028-mutability/091-intro-to-as-const.solution.ts diff --git a/src/028-mutability/092-as-const-to-make-functions-infer-a-tuple.problem.ts b/src/028-mutability/092-as-const-vs-object-freeze.problem.ts similarity index 100% rename from src/028-mutability/092-as-const-to-make-functions-infer-a-tuple.problem.ts rename to src/028-mutability/092-as-const-vs-object-freeze.problem.ts diff --git a/src/028-mutability/092-as-const-to-make-functions-infer-a-tuple.solution.ts b/src/028-mutability/092-as-const-vs-object-freeze.solution.ts similarity index 100% rename from src/028-mutability/092-as-const-to-make-functions-infer-a-tuple.solution.ts rename to src/028-mutability/092-as-const-vs-object-freeze.solution.ts diff --git a/src/028-mutability/093-as-const-can-make-strings-infer-as-their-literals-in-objects.problem.ts b/src/028-mutability/093-readonly-arrays.problem.ts similarity index 100% rename from src/028-mutability/093-as-const-can-make-strings-infer-as-their-literals-in-objects.problem.ts rename to src/028-mutability/093-readonly-arrays.problem.ts diff --git a/src/028-mutability/093-as-const-can-make-strings-infer-as-their-literals-in-objects.solution.ts b/src/028-mutability/093-readonly-arrays.solution.ts similarity index 100% rename from src/028-mutability/093-as-const-can-make-strings-infer-as-their-literals-in-objects.solution.ts rename to src/028-mutability/093-readonly-arrays.solution.ts diff --git a/src/030-classes/094-understand-classes.problem.ts b/src/028-mutability/094-includes-on-readonly-arrays.problem.ts similarity index 100% rename from src/030-classes/094-understand-classes.problem.ts rename to src/028-mutability/094-includes-on-readonly-arrays.problem.ts diff --git a/src/030-classes/094-understand-classes.solution.ts b/src/028-mutability/094-includes-on-readonly-arrays.solution.ts similarity index 100% rename from src/030-classes/094-understand-classes.solution.ts rename to src/028-mutability/094-includes-on-readonly-arrays.solution.ts diff --git a/src/030-classes/095-public-and-private-properties.problem.ts b/src/028-mutability/095-readonly-arrays-vs-mutable-arrays.problem.ts similarity index 100% rename from src/030-classes/095-public-and-private-properties.problem.ts rename to src/028-mutability/095-readonly-arrays-vs-mutable-arrays.problem.ts diff --git a/src/030-classes/095-public-and-private-properties.solution.ts b/src/028-mutability/095-readonly-arrays-vs-mutable-arrays.solution.ts similarity index 100% rename from src/030-classes/095-public-and-private-properties.solution.ts rename to src/028-mutability/095-readonly-arrays-vs-mutable-arrays.solution.ts diff --git a/src/030-classes/096-hash-in-javascript.problem.ts b/src/028-mutability/096-as-const-to-make-functions-infer-a-tuple.problem.ts similarity index 100% rename from src/030-classes/096-hash-in-javascript.problem.ts rename to src/028-mutability/096-as-const-to-make-functions-infer-a-tuple.problem.ts diff --git a/src/030-classes/096-hash-in-javascript.solution.ts b/src/028-mutability/096-as-const-to-make-functions-infer-a-tuple.solution.ts similarity index 100% rename from src/030-classes/096-hash-in-javascript.solution.ts rename to src/028-mutability/096-as-const-to-make-functions-infer-a-tuple.solution.ts diff --git a/src/030-classes/097-optional-class-properties.problem.ts b/src/028-mutability/097-as-const-can-make-strings-infer-as-their-literals-in-objects.problem.ts similarity index 100% rename from src/030-classes/097-optional-class-properties.problem.ts rename to src/028-mutability/097-as-const-can-make-strings-infer-as-their-literals-in-objects.problem.ts diff --git a/src/030-classes/097-optional-class-properties.solution.ts b/src/028-mutability/097-as-const-can-make-strings-infer-as-their-literals-in-objects.solution.ts similarity index 100% rename from src/030-classes/097-optional-class-properties.solution.ts rename to src/028-mutability/097-as-const-can-make-strings-infer-as-their-literals-in-objects.solution.ts diff --git a/src/030-classes/098-readonly-class-properties.problem.ts b/src/030-classes/098-understand-classes.problem.ts similarity index 100% rename from src/030-classes/098-readonly-class-properties.problem.ts rename to src/030-classes/098-understand-classes.problem.ts diff --git a/src/030-classes/098-readonly-class-properties.solution.ts b/src/030-classes/098-understand-classes.solution.ts similarity index 100% rename from src/030-classes/098-readonly-class-properties.solution.ts rename to src/030-classes/098-understand-classes.solution.ts diff --git a/src/030-classes/099-class-methods.problem.ts b/src/030-classes/099-public-and-private-properties.problem.ts similarity index 100% rename from src/030-classes/099-class-methods.problem.ts rename to src/030-classes/099-public-and-private-properties.problem.ts diff --git a/src/030-classes/099-class-methods.solution.ts b/src/030-classes/099-public-and-private-properties.solution.ts similarity index 100% rename from src/030-classes/099-class-methods.solution.ts rename to src/030-classes/099-public-and-private-properties.solution.ts diff --git a/src/030-classes/100-decorators.problem.ts b/src/030-classes/100-hash-in-javascript.problem.ts similarity index 100% rename from src/030-classes/100-decorators.problem.ts rename to src/030-classes/100-hash-in-javascript.problem.ts diff --git a/src/030-classes/100-decorators.solution.ts b/src/030-classes/100-hash-in-javascript.solution.ts similarity index 100% rename from src/030-classes/100-decorators.solution.ts rename to src/030-classes/100-hash-in-javascript.solution.ts diff --git a/src/030-classes/101-implementing-interfaces.problem.ts b/src/030-classes/101-optional-class-properties.problem.ts similarity index 100% rename from src/030-classes/101-implementing-interfaces.problem.ts rename to src/030-classes/101-optional-class-properties.problem.ts diff --git a/src/030-classes/101-implementing-interfaces.solution.ts b/src/030-classes/101-optional-class-properties.solution.ts similarity index 100% rename from src/030-classes/101-implementing-interfaces.solution.ts rename to src/030-classes/101-optional-class-properties.solution.ts diff --git a/src/030-classes/102-typing-this-in-functions.problem.ts b/src/030-classes/102-readonly-class-properties.problem.ts similarity index 100% rename from src/030-classes/102-typing-this-in-functions.problem.ts rename to src/030-classes/102-readonly-class-properties.problem.ts diff --git a/src/030-classes/102-typing-this-in-functions.solution.ts b/src/030-classes/102-readonly-class-properties.solution.ts similarity index 100% rename from src/030-classes/102-typing-this-in-functions.solution.ts rename to src/030-classes/102-readonly-class-properties.solution.ts diff --git a/src/030-classes/103-can-you-type-this-in-functions.problem.ts b/src/030-classes/103-class-methods.problem.ts similarity index 100% rename from src/030-classes/103-can-you-type-this-in-functions.problem.ts rename to src/030-classes/103-class-methods.problem.ts diff --git a/src/030-classes/103-can-you-type-this-in-functions.solution.ts b/src/030-classes/103-class-methods.solution.ts similarity index 100% rename from src/030-classes/103-can-you-type-this-in-functions.solution.ts rename to src/030-classes/103-class-methods.solution.ts diff --git a/src/032-typescript-only-features/104-auto-assignation-in-classes.problem.ts b/src/030-classes/104-decorators.problem.ts similarity index 100% rename from src/032-typescript-only-features/104-auto-assignation-in-classes.problem.ts rename to src/030-classes/104-decorators.problem.ts diff --git a/src/032-typescript-only-features/104-auto-assignation-in-classes.solution.ts b/src/030-classes/104-decorators.solution.ts similarity index 100% rename from src/032-typescript-only-features/104-auto-assignation-in-classes.solution.ts rename to src/030-classes/104-decorators.solution.ts diff --git a/src/032-typescript-only-features/105-enums.problem.ts b/src/030-classes/105-implementing-interfaces.problem.ts similarity index 100% rename from src/032-typescript-only-features/105-enums.problem.ts rename to src/030-classes/105-implementing-interfaces.problem.ts diff --git a/src/032-typescript-only-features/105-enums.solution.ts b/src/030-classes/105-implementing-interfaces.solution.ts similarity index 100% rename from src/032-typescript-only-features/105-enums.solution.ts rename to src/030-classes/105-implementing-interfaces.solution.ts diff --git a/src/032-typescript-only-features/106-const-enums.problem.ts b/src/030-classes/106-typing-this-in-functions.problem.ts similarity index 100% rename from src/032-typescript-only-features/106-const-enums.problem.ts rename to src/030-classes/106-typing-this-in-functions.problem.ts diff --git a/src/032-typescript-only-features/106-const-enums.solution.ts b/src/030-classes/106-typing-this-in-functions.solution.ts similarity index 100% rename from src/032-typescript-only-features/106-const-enums.solution.ts rename to src/030-classes/106-typing-this-in-functions.solution.ts diff --git a/src/032-typescript-only-features/107-namespaces.problem.ts b/src/030-classes/107-can-you-type-this-in-functions.problem.ts similarity index 100% rename from src/032-typescript-only-features/107-namespaces.problem.ts rename to src/030-classes/107-can-you-type-this-in-functions.problem.ts diff --git a/src/032-typescript-only-features/107-namespaces.solution.ts b/src/030-classes/107-can-you-type-this-in-functions.solution.ts similarity index 100% rename from src/032-typescript-only-features/107-namespaces.solution.ts rename to src/030-classes/107-can-you-type-this-in-functions.solution.ts diff --git a/src/032-typescript-only-features/108-namespaces-can-be-used-as-types-or-values.problem.ts b/src/032-typescript-only-features/108-auto-assignation-in-classes.problem.ts similarity index 100% rename from src/032-typescript-only-features/108-namespaces-can-be-used-as-types-or-values.problem.ts rename to src/032-typescript-only-features/108-auto-assignation-in-classes.problem.ts diff --git a/src/032-typescript-only-features/108-namespaces-can-be-used-as-types-or-values.solution.ts b/src/032-typescript-only-features/108-auto-assignation-in-classes.solution.ts similarity index 100% rename from src/032-typescript-only-features/108-namespaces-can-be-used-as-types-or-values.solution.ts rename to src/032-typescript-only-features/108-auto-assignation-in-classes.solution.ts diff --git a/src/032-typescript-only-features/109-namespaces-can-declaration-merge.problem.ts b/src/032-typescript-only-features/109-enums.problem.ts similarity index 100% rename from src/032-typescript-only-features/109-namespaces-can-declaration-merge.problem.ts rename to src/032-typescript-only-features/109-enums.problem.ts diff --git a/src/032-typescript-only-features/109-namespaces-can-declaration-merge.solution.ts b/src/032-typescript-only-features/109-enums.solution.ts similarity index 100% rename from src/032-typescript-only-features/109-namespaces-can-declaration-merge.solution.ts rename to src/032-typescript-only-features/109-enums.solution.ts diff --git a/src/032-typescript-only-features/110-interfaces-within-namespaces-can-declaration-merge.problem.ts b/src/032-typescript-only-features/110-const-enums.problem.ts similarity index 100% rename from src/032-typescript-only-features/110-interfaces-within-namespaces-can-declaration-merge.problem.ts rename to src/032-typescript-only-features/110-const-enums.problem.ts diff --git a/src/032-typescript-only-features/110-interfaces-within-namespaces-can-declaration-merge.solution.ts b/src/032-typescript-only-features/110-const-enums.solution.ts similarity index 100% rename from src/032-typescript-only-features/110-interfaces-within-namespaces-can-declaration-merge.solution.ts rename to src/032-typescript-only-features/110-const-enums.solution.ts diff --git a/src/032-typescript-only-features/111-should-you-use-namespaces.problem.ts b/src/032-typescript-only-features/111-namespaces.problem.ts similarity index 100% rename from src/032-typescript-only-features/111-should-you-use-namespaces.problem.ts rename to src/032-typescript-only-features/111-namespaces.problem.ts diff --git a/src/032-typescript-only-features/111-should-you-use-namespaces.solution.ts b/src/032-typescript-only-features/111-namespaces.solution.ts similarity index 100% rename from src/032-typescript-only-features/111-should-you-use-namespaces.solution.ts rename to src/032-typescript-only-features/111-namespaces.solution.ts diff --git a/src/035-understanding-the-compiler/112-any.problem.ts b/src/032-typescript-only-features/112-namespaces-can-be-used-as-types-or-values.problem.ts similarity index 100% rename from src/035-understanding-the-compiler/112-any.problem.ts rename to src/032-typescript-only-features/112-namespaces-can-be-used-as-types-or-values.problem.ts diff --git a/src/035-understanding-the-compiler/112-any.solution.ts b/src/032-typescript-only-features/112-namespaces-can-be-used-as-types-or-values.solution.ts similarity index 100% rename from src/035-understanding-the-compiler/112-any.solution.ts rename to src/032-typescript-only-features/112-namespaces-can-be-used-as-types-or-values.solution.ts diff --git a/src/035-understanding-the-compiler/113-global-typings-use-any.problem.ts b/src/032-typescript-only-features/113-namespaces-can-declaration-merge.problem.ts similarity index 100% rename from src/035-understanding-the-compiler/113-global-typings-use-any.problem.ts rename to src/032-typescript-only-features/113-namespaces-can-declaration-merge.problem.ts diff --git a/src/035-understanding-the-compiler/113-global-typings-use-any.solution.ts b/src/032-typescript-only-features/113-namespaces-can-declaration-merge.solution.ts similarity index 100% rename from src/035-understanding-the-compiler/113-global-typings-use-any.solution.ts rename to src/032-typescript-only-features/113-namespaces-can-declaration-merge.solution.ts diff --git a/src/035-understanding-the-compiler/114-as-and-as-any.problem.ts b/src/032-typescript-only-features/114-interfaces-within-namespaces-can-declaration-merge.problem.ts similarity index 100% rename from src/035-understanding-the-compiler/114-as-and-as-any.problem.ts rename to src/032-typescript-only-features/114-interfaces-within-namespaces-can-declaration-merge.problem.ts diff --git a/src/035-understanding-the-compiler/114-as-and-as-any.solution.ts b/src/032-typescript-only-features/114-interfaces-within-namespaces-can-declaration-merge.solution.ts similarity index 100% rename from src/035-understanding-the-compiler/114-as-and-as-any.solution.ts rename to src/032-typescript-only-features/114-interfaces-within-namespaces-can-declaration-merge.solution.ts diff --git a/src/035-understanding-the-compiler/115-limits-of-as.problem.ts b/src/032-typescript-only-features/115-should-you-use-namespaces.problem.ts similarity index 100% rename from src/035-understanding-the-compiler/115-limits-of-as.problem.ts rename to src/032-typescript-only-features/115-should-you-use-namespaces.problem.ts diff --git a/src/035-understanding-the-compiler/115-limits-of-as.solution.ts b/src/032-typescript-only-features/115-should-you-use-namespaces.solution.ts similarity index 100% rename from src/035-understanding-the-compiler/115-limits-of-as.solution.ts rename to src/032-typescript-only-features/115-should-you-use-namespaces.solution.ts diff --git a/src/035-understanding-the-compiler/116-satisfies.problem.ts b/src/035-understanding-the-compiler/116-any.problem.ts similarity index 100% rename from src/035-understanding-the-compiler/116-satisfies.problem.ts rename to src/035-understanding-the-compiler/116-any.problem.ts diff --git a/src/035-understanding-the-compiler/116-satisfies.solution.ts b/src/035-understanding-the-compiler/116-any.solution.ts similarity index 100% rename from src/035-understanding-the-compiler/116-satisfies.solution.ts rename to src/035-understanding-the-compiler/116-any.solution.ts diff --git a/src/035-understanding-the-compiler/117-annotating-errors-a-function-throws.problem.ts b/src/035-understanding-the-compiler/117-global-typings-use-any.problem.ts similarity index 100% rename from src/035-understanding-the-compiler/117-annotating-errors-a-function-throws.problem.ts rename to src/035-understanding-the-compiler/117-global-typings-use-any.problem.ts diff --git a/src/035-understanding-the-compiler/117-annotating-errors-a-function-throws.solution.ts b/src/035-understanding-the-compiler/117-global-typings-use-any.solution.ts similarity index 100% rename from src/035-understanding-the-compiler/117-annotating-errors-a-function-throws.solution.ts rename to src/035-understanding-the-compiler/117-global-typings-use-any.solution.ts diff --git a/src/035-understanding-the-compiler/118-excess-properties-warnings.problem.ts b/src/035-understanding-the-compiler/118-as-and-as-any.problem.ts similarity index 100% rename from src/035-understanding-the-compiler/118-excess-properties-warnings.problem.ts rename to src/035-understanding-the-compiler/118-as-and-as-any.problem.ts diff --git a/src/035-understanding-the-compiler/118-excess-properties-warnings.solution.ts b/src/035-understanding-the-compiler/118-as-and-as-any.solution.ts similarity index 100% rename from src/035-understanding-the-compiler/118-excess-properties-warnings.solution.ts rename to src/035-understanding-the-compiler/118-as-and-as-any.solution.ts diff --git a/src/035-understanding-the-compiler/119-object-keys-and-object-entries.problem.ts b/src/035-understanding-the-compiler/119-limits-of-as.problem.ts similarity index 100% rename from src/035-understanding-the-compiler/119-object-keys-and-object-entries.problem.ts rename to src/035-understanding-the-compiler/119-limits-of-as.problem.ts diff --git a/src/035-understanding-the-compiler/119-object-keys-and-object-entries.solution.ts b/src/035-understanding-the-compiler/119-limits-of-as.solution.ts similarity index 100% rename from src/035-understanding-the-compiler/119-object-keys-and-object-entries.solution.ts rename to src/035-understanding-the-compiler/119-limits-of-as.solution.ts diff --git a/src/035-understanding-the-compiler/120-structural-vs-nominal-typing.problem.ts b/src/035-understanding-the-compiler/120-ts-ignore.problem.ts similarity index 100% rename from src/035-understanding-the-compiler/120-structural-vs-nominal-typing.problem.ts rename to src/035-understanding-the-compiler/120-ts-ignore.problem.ts diff --git a/src/035-understanding-the-compiler/120-structural-vs-nominal-typing.solution.ts b/src/035-understanding-the-compiler/120-ts-ignore.solution.ts similarity index 100% rename from src/035-understanding-the-compiler/120-structural-vs-nominal-typing.solution.ts rename to src/035-understanding-the-compiler/120-ts-ignore.solution.ts diff --git a/src/035-understanding-the-compiler/121-how-enums-break-structural-typing.problem.ts b/src/035-understanding-the-compiler/121-ts-expect-error.problem.ts similarity index 100% rename from src/035-understanding-the-compiler/121-how-enums-break-structural-typing.problem.ts rename to src/035-understanding-the-compiler/121-ts-expect-error.problem.ts diff --git a/src/035-understanding-the-compiler/121-how-enums-break-structural-typing.solution.ts b/src/035-understanding-the-compiler/121-ts-expect-error.solution.ts similarity index 100% rename from src/035-understanding-the-compiler/121-how-enums-break-structural-typing.solution.ts rename to src/035-understanding-the-compiler/121-ts-expect-error.solution.ts diff --git a/src/035-understanding-the-compiler/122-unions-of-functions.problem.ts b/src/035-understanding-the-compiler/122-satisfies.problem.ts similarity index 100% rename from src/035-understanding-the-compiler/122-unions-of-functions.problem.ts rename to src/035-understanding-the-compiler/122-satisfies.problem.ts diff --git a/src/035-understanding-the-compiler/122-unions-of-functions.solution.ts b/src/035-understanding-the-compiler/122-satisfies.solution.ts similarity index 100% rename from src/035-understanding-the-compiler/122-unions-of-functions.solution.ts rename to src/035-understanding-the-compiler/122-satisfies.solution.ts diff --git a/src/035-understanding-the-compiler/123-empty-object-type.problem.ts b/src/035-understanding-the-compiler/123-satisfies-with-as-const.problem.ts similarity index 100% rename from src/035-understanding-the-compiler/123-empty-object-type.problem.ts rename to src/035-understanding-the-compiler/123-satisfies-with-as-const.problem.ts diff --git a/src/035-understanding-the-compiler/123-empty-object-type.solution.ts b/src/035-understanding-the-compiler/123-satisfies-with-as-const.solution.ts similarity index 100% rename from src/035-understanding-the-compiler/123-empty-object-type.solution.ts rename to src/035-understanding-the-compiler/123-satisfies-with-as-const.solution.ts diff --git a/src/040-deriving-types-from-values/124-typeof-keyword.problem.ts b/src/035-understanding-the-compiler/124-annotating-errors-a-function-throws.problem.ts similarity index 100% rename from src/040-deriving-types-from-values/124-typeof-keyword.problem.ts rename to src/035-understanding-the-compiler/124-annotating-errors-a-function-throws.problem.ts diff --git a/src/040-deriving-types-from-values/124-typeof-keyword.solution.ts b/src/035-understanding-the-compiler/124-annotating-errors-a-function-throws.solution.ts similarity index 100% rename from src/040-deriving-types-from-values/124-typeof-keyword.solution.ts rename to src/035-understanding-the-compiler/124-annotating-errors-a-function-throws.solution.ts diff --git a/src/040-deriving-types-from-values/125-create-runtime-values-from-types.problem.ts b/src/035-understanding-the-compiler/125-excess-properties-warnings.problem.ts similarity index 100% rename from src/040-deriving-types-from-values/125-create-runtime-values-from-types.problem.ts rename to src/035-understanding-the-compiler/125-excess-properties-warnings.problem.ts diff --git a/src/040-deriving-types-from-values/125-create-runtime-values-from-types.solution.ts b/src/035-understanding-the-compiler/125-excess-properties-warnings.solution.ts similarity index 100% rename from src/040-deriving-types-from-values/125-create-runtime-values-from-types.solution.ts rename to src/035-understanding-the-compiler/125-excess-properties-warnings.solution.ts diff --git a/src/040-deriving-types-from-values/126-classes-and-enums-cross-value-and-type-world.problem.ts b/src/035-understanding-the-compiler/126-object-keys-and-object-entries.problem.ts similarity index 100% rename from src/040-deriving-types-from-values/126-classes-and-enums-cross-value-and-type-world.problem.ts rename to src/035-understanding-the-compiler/126-object-keys-and-object-entries.problem.ts diff --git a/src/040-deriving-types-from-values/126-classes-and-enums-cross-value-and-type-world.solution.ts b/src/035-understanding-the-compiler/126-object-keys-and-object-entries.solution.ts similarity index 100% rename from src/040-deriving-types-from-values/126-classes-and-enums-cross-value-and-type-world.solution.ts rename to src/035-understanding-the-compiler/126-object-keys-and-object-entries.solution.ts diff --git a/src/040-deriving-types-from-values/127-this-crosses-value-and-type-world.problem.ts b/src/035-understanding-the-compiler/127-structural-vs-nominal-typing.problem.ts similarity index 100% rename from src/040-deriving-types-from-values/127-this-crosses-value-and-type-world.problem.ts rename to src/035-understanding-the-compiler/127-structural-vs-nominal-typing.problem.ts diff --git a/src/040-deriving-types-from-values/127-this-crosses-value-and-type-world.solution.ts b/src/035-understanding-the-compiler/127-structural-vs-nominal-typing.solution.ts similarity index 100% rename from src/040-deriving-types-from-values/127-this-crosses-value-and-type-world.solution.ts rename to src/035-understanding-the-compiler/127-structural-vs-nominal-typing.solution.ts diff --git a/src/040-deriving-types-from-values/128-return-type.problem.ts b/src/035-understanding-the-compiler/128-how-enums-break-structural-typing.problem.ts similarity index 100% rename from src/040-deriving-types-from-values/128-return-type.problem.ts rename to src/035-understanding-the-compiler/128-how-enums-break-structural-typing.problem.ts diff --git a/src/040-deriving-types-from-values/128-return-type.solution.ts b/src/035-understanding-the-compiler/128-how-enums-break-structural-typing.solution.ts similarity index 100% rename from src/040-deriving-types-from-values/128-return-type.solution.ts rename to src/035-understanding-the-compiler/128-how-enums-break-structural-typing.solution.ts diff --git a/src/040-deriving-types-from-values/129-parameters-type-helper.problem.ts b/src/035-understanding-the-compiler/129-unions-of-functions.problem.ts similarity index 100% rename from src/040-deriving-types-from-values/129-parameters-type-helper.problem.ts rename to src/035-understanding-the-compiler/129-unions-of-functions.problem.ts diff --git a/src/040-deriving-types-from-values/129-parameters-type-helper.solution.ts b/src/035-understanding-the-compiler/129-unions-of-functions.solution.ts similarity index 100% rename from src/040-deriving-types-from-values/129-parameters-type-helper.solution.ts rename to src/035-understanding-the-compiler/129-unions-of-functions.solution.ts diff --git a/src/040-deriving-types-from-values/130-keyof.problem.ts b/src/035-understanding-the-compiler/130-empty-object-type.problem.ts similarity index 100% rename from src/040-deriving-types-from-values/130-keyof.problem.ts rename to src/035-understanding-the-compiler/130-empty-object-type.problem.ts diff --git a/src/040-deriving-types-from-values/130-keyof.solution.ts b/src/035-understanding-the-compiler/130-empty-object-type.solution.ts similarity index 100% rename from src/040-deriving-types-from-values/130-keyof.solution.ts rename to src/035-understanding-the-compiler/130-empty-object-type.solution.ts diff --git a/src/040-deriving-types-from-values/131-indexed-access-types.problem.ts b/src/040-deriving-types-from-values/131-typeof-keyword.problem.ts similarity index 100% rename from src/040-deriving-types-from-values/131-indexed-access-types.problem.ts rename to src/040-deriving-types-from-values/131-typeof-keyword.problem.ts diff --git a/src/040-deriving-types-from-values/131-indexed-access-types.solution.ts b/src/040-deriving-types-from-values/131-typeof-keyword.solution.ts similarity index 100% rename from src/040-deriving-types-from-values/131-indexed-access-types.solution.ts rename to src/040-deriving-types-from-values/131-typeof-keyword.solution.ts diff --git a/src/040-deriving-types-from-values/132-pass-unions-to-indexed-access-types.problem.ts b/src/040-deriving-types-from-values/132-create-runtime-values-from-types.problem.ts similarity index 100% rename from src/040-deriving-types-from-values/132-pass-unions-to-indexed-access-types.problem.ts rename to src/040-deriving-types-from-values/132-create-runtime-values-from-types.problem.ts diff --git a/src/040-deriving-types-from-values/132-pass-unions-to-indexed-access-types.solution.ts b/src/040-deriving-types-from-values/132-create-runtime-values-from-types.solution.ts similarity index 100% rename from src/040-deriving-types-from-values/132-pass-unions-to-indexed-access-types.solution.ts rename to src/040-deriving-types-from-values/132-create-runtime-values-from-types.solution.ts diff --git a/src/040-deriving-types-from-values/133-pass-keyof-into-an-indexed-access-type.problem.ts b/src/040-deriving-types-from-values/133-classes-and-enums-cross-value-and-type-world.problem.ts similarity index 100% rename from src/040-deriving-types-from-values/133-pass-keyof-into-an-indexed-access-type.problem.ts rename to src/040-deriving-types-from-values/133-classes-and-enums-cross-value-and-type-world.problem.ts diff --git a/src/040-deriving-types-from-values/133-pass-keyof-into-an-indexed-access-type.solution.ts b/src/040-deriving-types-from-values/133-classes-and-enums-cross-value-and-type-world.solution.ts similarity index 100% rename from src/040-deriving-types-from-values/133-pass-keyof-into-an-indexed-access-type.solution.ts rename to src/040-deriving-types-from-values/133-classes-and-enums-cross-value-and-type-world.solution.ts diff --git a/src/040-deriving-types-from-values/134-create-an-enum-from-as-const-object.problem.ts b/src/040-deriving-types-from-values/134-this-crosses-value-and-type-world.problem.ts similarity index 100% rename from src/040-deriving-types-from-values/134-create-an-enum-from-as-const-object.problem.ts rename to src/040-deriving-types-from-values/134-this-crosses-value-and-type-world.problem.ts diff --git a/src/040-deriving-types-from-values/134-create-an-enum-from-as-const-object.solution.ts b/src/040-deriving-types-from-values/134-this-crosses-value-and-type-world.solution.ts similarity index 100% rename from src/040-deriving-types-from-values/134-create-an-enum-from-as-const-object.solution.ts rename to src/040-deriving-types-from-values/134-this-crosses-value-and-type-world.solution.ts diff --git a/src/040-deriving-types-from-values/135-create-a-union-from-an-as-const-array.problem.ts b/src/040-deriving-types-from-values/135-return-type.problem.ts similarity index 100% rename from src/040-deriving-types-from-values/135-create-a-union-from-an-as-const-array.problem.ts rename to src/040-deriving-types-from-values/135-return-type.problem.ts diff --git a/src/040-deriving-types-from-values/135-create-a-union-from-an-as-const-array.solution.ts b/src/040-deriving-types-from-values/135-return-type.solution.ts similarity index 100% rename from src/040-deriving-types-from-values/135-create-a-union-from-an-as-const-array.solution.ts rename to src/040-deriving-types-from-values/135-return-type.solution.ts diff --git a/src/040-deriving-types-from-values/136-should-i-use-enums-or-as-const.problem.ts b/src/040-deriving-types-from-values/136-parameters-type-helper.problem.ts similarity index 100% rename from src/040-deriving-types-from-values/136-should-i-use-enums-or-as-const.problem.ts rename to src/040-deriving-types-from-values/136-parameters-type-helper.problem.ts diff --git a/src/040-deriving-types-from-values/136-should-i-use-enums-or-as-const.solution.ts b/src/040-deriving-types-from-values/136-parameters-type-helper.solution.ts similarity index 100% rename from src/040-deriving-types-from-values/136-should-i-use-enums-or-as-const.solution.ts rename to src/040-deriving-types-from-values/136-parameters-type-helper.solution.ts diff --git a/src/040-deriving-types-from-values/137-using-numeric-comparators-on-enums.problem.ts b/src/040-deriving-types-from-values/137-keyof.problem.ts similarity index 100% rename from src/040-deriving-types-from-values/137-using-numeric-comparators-on-enums.problem.ts rename to src/040-deriving-types-from-values/137-keyof.problem.ts diff --git a/src/040-deriving-types-from-values/137-using-numeric-comparators-on-enums.solution.ts b/src/040-deriving-types-from-values/137-keyof.solution.ts similarity index 100% rename from src/040-deriving-types-from-values/137-using-numeric-comparators-on-enums.solution.ts rename to src/040-deriving-types-from-values/137-keyof.solution.ts diff --git a/src/060-modules-and-namespaces/138-module-or-script.problem.ts b/src/040-deriving-types-from-values/138-indexed-access-types.problem.ts similarity index 100% rename from src/060-modules-and-namespaces/138-module-or-script.problem.ts rename to src/040-deriving-types-from-values/138-indexed-access-types.problem.ts diff --git a/src/060-modules-and-namespaces/138-module-or-script.solution.ts b/src/040-deriving-types-from-values/138-indexed-access-types.solution.ts similarity index 100% rename from src/060-modules-and-namespaces/138-module-or-script.solution.ts rename to src/040-deriving-types-from-values/138-indexed-access-types.solution.ts diff --git a/src/060-modules-and-namespaces/139-module-detection-force.problem.ts b/src/040-deriving-types-from-values/139-pass-unions-to-indexed-access-types.problem.ts similarity index 100% rename from src/060-modules-and-namespaces/139-module-detection-force.problem.ts rename to src/040-deriving-types-from-values/139-pass-unions-to-indexed-access-types.problem.ts diff --git a/src/060-modules-and-namespaces/139-module-detection-force.solution.ts b/src/040-deriving-types-from-values/139-pass-unions-to-indexed-access-types.solution.ts similarity index 100% rename from src/060-modules-and-namespaces/139-module-detection-force.solution.ts rename to src/040-deriving-types-from-values/139-pass-unions-to-indexed-access-types.solution.ts diff --git a/src/060-modules-and-namespaces/140-isolated-modules.problem.ts b/src/040-deriving-types-from-values/140-pass-keyof-into-an-indexed-access-type.problem.ts similarity index 100% rename from src/060-modules-and-namespaces/140-isolated-modules.problem.ts rename to src/040-deriving-types-from-values/140-pass-keyof-into-an-indexed-access-type.problem.ts diff --git a/src/060-modules-and-namespaces/140-isolated-modules.solution.ts b/src/040-deriving-types-from-values/140-pass-keyof-into-an-indexed-access-type.solution.ts similarity index 100% rename from src/060-modules-and-namespaces/140-isolated-modules.solution.ts rename to src/040-deriving-types-from-values/140-pass-keyof-into-an-indexed-access-type.solution.ts diff --git a/src/060-modules-and-namespaces/141-cjs-vs-esm.problem.ts b/src/040-deriving-types-from-values/141-create-an-enum-from-as-const-object.problem.ts similarity index 100% rename from src/060-modules-and-namespaces/141-cjs-vs-esm.problem.ts rename to src/040-deriving-types-from-values/141-create-an-enum-from-as-const-object.problem.ts diff --git a/src/060-modules-and-namespaces/141-cjs-vs-esm.solution.ts b/src/040-deriving-types-from-values/141-create-an-enum-from-as-const-object.solution.ts similarity index 100% rename from src/060-modules-and-namespaces/141-cjs-vs-esm.solution.ts rename to src/040-deriving-types-from-values/141-create-an-enum-from-as-const-object.solution.ts diff --git a/src/060-modules-and-namespaces/142-module-resolution-bundler-or-nodenext.problem.ts b/src/040-deriving-types-from-values/142-create-a-union-from-an-as-const-array.problem.ts similarity index 100% rename from src/060-modules-and-namespaces/142-module-resolution-bundler-or-nodenext.problem.ts rename to src/040-deriving-types-from-values/142-create-a-union-from-an-as-const-array.problem.ts diff --git a/src/060-modules-and-namespaces/142-module-resolution-bundler-or-nodenext.solution.ts b/src/040-deriving-types-from-values/142-create-a-union-from-an-as-const-array.solution.ts similarity index 100% rename from src/060-modules-and-namespaces/142-module-resolution-bundler-or-nodenext.solution.ts rename to src/040-deriving-types-from-values/142-create-a-union-from-an-as-const-array.solution.ts diff --git a/src/060-modules-and-namespaces/143-declaration-files.problem.ts b/src/040-deriving-types-from-values/143-should-i-use-enums-or-as-const.problem.ts similarity index 100% rename from src/060-modules-and-namespaces/143-declaration-files.problem.ts rename to src/040-deriving-types-from-values/143-should-i-use-enums-or-as-const.problem.ts diff --git a/src/060-modules-and-namespaces/143-declaration-files.solution.ts b/src/040-deriving-types-from-values/143-should-i-use-enums-or-as-const.solution.ts similarity index 100% rename from src/060-modules-and-namespaces/143-declaration-files.solution.ts rename to src/040-deriving-types-from-values/143-should-i-use-enums-or-as-const.solution.ts diff --git a/src/060-modules-and-namespaces/144-skip-lib-check-true.problem.ts b/src/040-deriving-types-from-values/144-using-numeric-comparators-on-enums.problem.ts similarity index 100% rename from src/060-modules-and-namespaces/144-skip-lib-check-true.problem.ts rename to src/040-deriving-types-from-values/144-using-numeric-comparators-on-enums.problem.ts diff --git a/src/060-modules-and-namespaces/144-skip-lib-check-true.solution.ts b/src/040-deriving-types-from-values/144-using-numeric-comparators-on-enums.solution.ts similarity index 100% rename from src/060-modules-and-namespaces/144-skip-lib-check-true.solution.ts rename to src/040-deriving-types-from-values/144-using-numeric-comparators-on-enums.solution.ts diff --git a/src/060-modules-and-namespaces/145-declaration-files-can-be-modules-or-scripts.problem.ts b/src/060-modules-and-namespaces/145-module-or-script.problem.ts similarity index 100% rename from src/060-modules-and-namespaces/145-declaration-files-can-be-modules-or-scripts.problem.ts rename to src/060-modules-and-namespaces/145-module-or-script.problem.ts diff --git a/src/060-modules-and-namespaces/145-declaration-files-can-be-modules-or-scripts.solution.ts b/src/060-modules-and-namespaces/145-module-or-script.solution.ts similarity index 100% rename from src/060-modules-and-namespaces/145-declaration-files-can-be-modules-or-scripts.solution.ts rename to src/060-modules-and-namespaces/145-module-or-script.solution.ts diff --git a/src/060-modules-and-namespaces/146-declaration-files-can-be-used-to-type-js-files.problem.ts b/src/060-modules-and-namespaces/146-module-detection-force.problem.ts similarity index 100% rename from src/060-modules-and-namespaces/146-declaration-files-can-be-used-to-type-js-files.problem.ts rename to src/060-modules-and-namespaces/146-module-detection-force.problem.ts diff --git a/src/060-modules-and-namespaces/146-declaration-files-can-be-used-to-type-js-files.solution.ts b/src/060-modules-and-namespaces/146-module-detection-force.solution.ts similarity index 100% rename from src/060-modules-and-namespaces/146-declaration-files-can-be-used-to-type-js-files.solution.ts rename to src/060-modules-and-namespaces/146-module-detection-force.solution.ts diff --git a/src/060-modules-and-namespaces/147-should-you-use-declaration-files.problem.ts b/src/060-modules-and-namespaces/147-isolated-modules.problem.ts similarity index 100% rename from src/060-modules-and-namespaces/147-should-you-use-declaration-files.problem.ts rename to src/060-modules-and-namespaces/147-isolated-modules.problem.ts diff --git a/src/060-modules-and-namespaces/147-should-you-use-declaration-files.solution.ts b/src/060-modules-and-namespaces/147-isolated-modules.solution.ts similarity index 100% rename from src/060-modules-and-namespaces/147-should-you-use-declaration-files.solution.ts rename to src/060-modules-and-namespaces/147-isolated-modules.solution.ts diff --git a/src/060-modules-and-namespaces/148-resolve-json-module.problem.ts b/src/060-modules-and-namespaces/148-cjs-vs-esm.problem.ts similarity index 100% rename from src/060-modules-and-namespaces/148-resolve-json-module.problem.ts rename to src/060-modules-and-namespaces/148-cjs-vs-esm.problem.ts diff --git a/src/060-modules-and-namespaces/148-resolve-json-module.solution.ts b/src/060-modules-and-namespaces/148-cjs-vs-esm.solution.ts similarity index 100% rename from src/060-modules-and-namespaces/148-resolve-json-module.solution.ts rename to src/060-modules-and-namespaces/148-cjs-vs-esm.solution.ts diff --git a/src/060-modules-and-namespaces/149-json-d-ts-files.problem.ts b/src/060-modules-and-namespaces/149-module-resolution-bundler-or-nodenext.problem.ts similarity index 100% rename from src/060-modules-and-namespaces/149-json-d-ts-files.problem.ts rename to src/060-modules-and-namespaces/149-module-resolution-bundler-or-nodenext.problem.ts diff --git a/src/060-modules-and-namespaces/149-json-d-ts-files.solution.ts b/src/060-modules-and-namespaces/149-module-resolution-bundler-or-nodenext.solution.ts similarity index 100% rename from src/060-modules-and-namespaces/149-json-d-ts-files.solution.ts rename to src/060-modules-and-namespaces/149-module-resolution-bundler-or-nodenext.solution.ts diff --git a/src/062-the-global-namespace/150-ambient-context-and-declare-const.problem.ts b/src/060-modules-and-namespaces/150-declaration-files.problem.ts similarity index 100% rename from src/062-the-global-namespace/150-ambient-context-and-declare-const.problem.ts rename to src/060-modules-and-namespaces/150-declaration-files.problem.ts diff --git a/src/062-the-global-namespace/150-ambient-context-and-declare-const.solution.ts b/src/060-modules-and-namespaces/150-declaration-files.solution.ts similarity index 100% rename from src/062-the-global-namespace/150-ambient-context-and-declare-const.solution.ts rename to src/060-modules-and-namespaces/150-declaration-files.solution.ts diff --git a/src/062-the-global-namespace/151-declare-global.problem.ts b/src/060-modules-and-namespaces/151-skip-lib-check-true.problem.ts similarity index 100% rename from src/062-the-global-namespace/151-declare-global.problem.ts rename to src/060-modules-and-namespaces/151-skip-lib-check-true.problem.ts diff --git a/src/062-the-global-namespace/151-declare-global.solution.ts b/src/060-modules-and-namespaces/151-skip-lib-check-true.solution.ts similarity index 100% rename from src/062-the-global-namespace/151-declare-global.solution.ts rename to src/060-modules-and-namespaces/151-skip-lib-check-true.solution.ts diff --git a/src/062-the-global-namespace/152-globals-are-tied-to-a-single-tsconfig.problem.ts b/src/060-modules-and-namespaces/152-declaration-files-can-be-modules-or-scripts.problem.ts similarity index 100% rename from src/062-the-global-namespace/152-globals-are-tied-to-a-single-tsconfig.problem.ts rename to src/060-modules-and-namespaces/152-declaration-files-can-be-modules-or-scripts.problem.ts diff --git a/src/062-the-global-namespace/152-globals-are-tied-to-a-single-tsconfig.solution.ts b/src/060-modules-and-namespaces/152-declaration-files-can-be-modules-or-scripts.solution.ts similarity index 100% rename from src/062-the-global-namespace/152-globals-are-tied-to-a-single-tsconfig.solution.ts rename to src/060-modules-and-namespaces/152-declaration-files-can-be-modules-or-scripts.solution.ts diff --git a/src/062-the-global-namespace/153-declare-global-or-declaration-file.problem.ts b/src/060-modules-and-namespaces/153-declaration-files-can-be-used-to-type-js-files.problem.ts similarity index 100% rename from src/062-the-global-namespace/153-declare-global-or-declaration-file.problem.ts rename to src/060-modules-and-namespaces/153-declaration-files-can-be-used-to-type-js-files.problem.ts diff --git a/src/062-the-global-namespace/153-declare-global-or-declaration-file.solution.ts b/src/060-modules-and-namespaces/153-declaration-files-can-be-used-to-type-js-files.solution.ts similarity index 100% rename from src/062-the-global-namespace/153-declare-global-or-declaration-file.solution.ts rename to src/060-modules-and-namespaces/153-declaration-files-can-be-used-to-type-js-files.solution.ts diff --git a/src/062-the-global-namespace/154-declare-module.problem.ts b/src/060-modules-and-namespaces/154-should-you-use-declaration-files.problem.ts similarity index 100% rename from src/062-the-global-namespace/154-declare-module.problem.ts rename to src/060-modules-and-namespaces/154-should-you-use-declaration-files.problem.ts diff --git a/src/062-the-global-namespace/154-declare-module.solution.ts b/src/060-modules-and-namespaces/154-should-you-use-declaration-files.solution.ts similarity index 100% rename from src/062-the-global-namespace/154-declare-module.solution.ts rename to src/060-modules-and-namespaces/154-should-you-use-declaration-files.solution.ts diff --git a/src/062-the-global-namespace/155-wildcard-in-declare-module.problem.ts b/src/060-modules-and-namespaces/155-resolve-json-module.problem.ts similarity index 100% rename from src/062-the-global-namespace/155-wildcard-in-declare-module.problem.ts rename to src/060-modules-and-namespaces/155-resolve-json-module.problem.ts diff --git a/src/062-the-global-namespace/155-wildcard-in-declare-module.solution.ts b/src/060-modules-and-namespaces/155-resolve-json-module.solution.ts similarity index 100% rename from src/062-the-global-namespace/155-wildcard-in-declare-module.solution.ts rename to src/060-modules-and-namespaces/155-resolve-json-module.solution.ts diff --git a/src/062-the-global-namespace/156-modifying-window.problem.ts b/src/060-modules-and-namespaces/156-json-d-ts-files.problem.ts similarity index 100% rename from src/062-the-global-namespace/156-modifying-window.problem.ts rename to src/060-modules-and-namespaces/156-json-d-ts-files.problem.ts diff --git a/src/062-the-global-namespace/156-modifying-window.solution.ts b/src/060-modules-and-namespaces/156-json-d-ts-files.solution.ts similarity index 100% rename from src/062-the-global-namespace/156-modifying-window.solution.ts rename to src/060-modules-and-namespaces/156-json-d-ts-files.solution.ts diff --git a/src/062-the-global-namespace/157-modifying-globalthis.problem.ts b/src/062-the-global-namespace/157-ambient-context-and-declare-const.problem.ts similarity index 100% rename from src/062-the-global-namespace/157-modifying-globalthis.problem.ts rename to src/062-the-global-namespace/157-ambient-context-and-declare-const.problem.ts diff --git a/src/062-the-global-namespace/157-modifying-globalthis.solution.ts b/src/062-the-global-namespace/157-ambient-context-and-declare-const.solution.ts similarity index 100% rename from src/062-the-global-namespace/157-modifying-globalthis.solution.ts rename to src/062-the-global-namespace/157-ambient-context-and-declare-const.solution.ts diff --git a/src/062-the-global-namespace/158-modifying-process-env.problem.ts b/src/062-the-global-namespace/158-declare-global.problem.ts similarity index 100% rename from src/062-the-global-namespace/158-modifying-process-env.problem.ts rename to src/062-the-global-namespace/158-declare-global.problem.ts diff --git a/src/062-the-global-namespace/158-modifying-process-env.solution.ts b/src/062-the-global-namespace/158-declare-global.solution.ts similarity index 100% rename from src/062-the-global-namespace/158-modifying-process-env.solution.ts rename to src/062-the-global-namespace/158-declare-global.solution.ts diff --git a/src/065-four-spaces-of-typescript-declarations/159-declare-module-for-overriding-third-party-libraries.problem.ts b/src/062-the-global-namespace/159-globals-are-tied-to-a-single-tsconfig.problem.ts similarity index 100% rename from src/065-four-spaces-of-typescript-declarations/159-declare-module-for-overriding-third-party-libraries.problem.ts rename to src/062-the-global-namespace/159-globals-are-tied-to-a-single-tsconfig.problem.ts diff --git a/src/065-four-spaces-of-typescript-declarations/159-declare-module-for-overriding-third-party-libraries.solution.ts b/src/062-the-global-namespace/159-globals-are-tied-to-a-single-tsconfig.solution.ts similarity index 100% rename from src/065-four-spaces-of-typescript-declarations/159-declare-module-for-overriding-third-party-libraries.solution.ts rename to src/062-the-global-namespace/159-globals-are-tied-to-a-single-tsconfig.solution.ts diff --git a/src/065-four-spaces-of-typescript-declarations/160-lib-d-ts.problem.ts b/src/062-the-global-namespace/160-declare-global-or-declaration-file.problem.ts similarity index 100% rename from src/065-four-spaces-of-typescript-declarations/160-lib-d-ts.problem.ts rename to src/062-the-global-namespace/160-declare-global-or-declaration-file.problem.ts diff --git a/src/065-four-spaces-of-typescript-declarations/160-lib-d-ts.solution.ts b/src/062-the-global-namespace/160-declare-global-or-declaration-file.solution.ts similarity index 100% rename from src/065-four-spaces-of-typescript-declarations/160-lib-d-ts.solution.ts rename to src/062-the-global-namespace/160-declare-global-or-declaration-file.solution.ts diff --git a/src/065-four-spaces-of-typescript-declarations/161-using-target-to-change-lib-d-ts.problem.ts b/src/062-the-global-namespace/161-declare-module.problem.ts similarity index 100% rename from src/065-four-spaces-of-typescript-declarations/161-using-target-to-change-lib-d-ts.problem.ts rename to src/062-the-global-namespace/161-declare-module.problem.ts diff --git a/src/065-four-spaces-of-typescript-declarations/161-using-target-to-change-lib-d-ts.solution.ts b/src/062-the-global-namespace/161-declare-module.solution.ts similarity index 100% rename from src/065-four-spaces-of-typescript-declarations/161-using-target-to-change-lib-d-ts.solution.ts rename to src/062-the-global-namespace/161-declare-module.solution.ts diff --git a/src/065-four-spaces-of-typescript-declarations/162-lib-dom-d-ts.problem.ts b/src/062-the-global-namespace/162-wildcard-in-declare-module.problem.ts similarity index 100% rename from src/065-four-spaces-of-typescript-declarations/162-lib-dom-d-ts.problem.ts rename to src/062-the-global-namespace/162-wildcard-in-declare-module.problem.ts diff --git a/src/065-four-spaces-of-typescript-declarations/162-lib-dom-d-ts.solution.ts b/src/062-the-global-namespace/162-wildcard-in-declare-module.solution.ts similarity index 100% rename from src/065-four-spaces-of-typescript-declarations/162-lib-dom-d-ts.solution.ts rename to src/062-the-global-namespace/162-wildcard-in-declare-module.solution.ts diff --git a/src/065-four-spaces-of-typescript-declarations/163-third-party-types.problem.ts b/src/062-the-global-namespace/163-modifying-window.problem.ts similarity index 100% rename from src/065-four-spaces-of-typescript-declarations/163-third-party-types.problem.ts rename to src/062-the-global-namespace/163-modifying-window.problem.ts diff --git a/src/065-four-spaces-of-typescript-declarations/163-third-party-types.solution.ts b/src/062-the-global-namespace/163-modifying-window.solution.ts similarity index 100% rename from src/065-four-spaces-of-typescript-declarations/163-third-party-types.solution.ts rename to src/062-the-global-namespace/163-modifying-window.solution.ts diff --git a/src/065-four-spaces-of-typescript-declarations/164-type-roots-in-tsconfig.problem.ts b/src/062-the-global-namespace/164-modifying-globalthis.problem.ts similarity index 100% rename from src/065-four-spaces-of-typescript-declarations/164-type-roots-in-tsconfig.problem.ts rename to src/062-the-global-namespace/164-modifying-globalthis.problem.ts diff --git a/src/065-four-spaces-of-typescript-declarations/164-type-roots-in-tsconfig.solution.ts b/src/062-the-global-namespace/164-modifying-globalthis.solution.ts similarity index 100% rename from src/065-four-spaces-of-typescript-declarations/164-type-roots-in-tsconfig.solution.ts rename to src/062-the-global-namespace/164-modifying-globalthis.solution.ts diff --git a/src/065-four-spaces-of-typescript-declarations/165-types-that-ship-with-libraries.problem.ts b/src/062-the-global-namespace/165-modifying-process-env.problem.ts similarity index 100% rename from src/065-four-spaces-of-typescript-declarations/165-types-that-ship-with-libraries.problem.ts rename to src/062-the-global-namespace/165-modifying-process-env.problem.ts diff --git a/src/065-four-spaces-of-typescript-declarations/165-types-that-ship-with-libraries.solution.ts b/src/062-the-global-namespace/165-modifying-process-env.solution.ts similarity index 100% rename from src/065-four-spaces-of-typescript-declarations/165-types-that-ship-with-libraries.solution.ts rename to src/062-the-global-namespace/165-modifying-process-env.solution.ts diff --git a/src/075-designing-your-types/166-domain-modelling-in-typescript.problem.ts b/src/065-four-spaces-of-typescript-declarations/166-declare-module-for-overriding-third-party-libraries.problem.ts similarity index 100% rename from src/075-designing-your-types/166-domain-modelling-in-typescript.problem.ts rename to src/065-four-spaces-of-typescript-declarations/166-declare-module-for-overriding-third-party-libraries.problem.ts diff --git a/src/075-designing-your-types/166-domain-modelling-in-typescript.solution.ts b/src/065-four-spaces-of-typescript-declarations/166-declare-module-for-overriding-third-party-libraries.solution.ts similarity index 100% rename from src/075-designing-your-types/166-domain-modelling-in-typescript.solution.ts rename to src/065-four-spaces-of-typescript-declarations/166-declare-module-for-overriding-third-party-libraries.solution.ts diff --git a/src/075-designing-your-types/167-intro-to-helper-types.problem.ts b/src/065-four-spaces-of-typescript-declarations/167-lib-d-ts.problem.ts similarity index 100% rename from src/075-designing-your-types/167-intro-to-helper-types.problem.ts rename to src/065-four-spaces-of-typescript-declarations/167-lib-d-ts.problem.ts diff --git a/src/075-designing-your-types/167-intro-to-helper-types.solution.ts b/src/065-four-spaces-of-typescript-declarations/167-lib-d-ts.solution.ts similarity index 100% rename from src/075-designing-your-types/167-intro-to-helper-types.solution.ts rename to src/065-four-spaces-of-typescript-declarations/167-lib-d-ts.solution.ts diff --git a/src/075-designing-your-types/168-multiple-type-parameters.problem.ts b/src/065-four-spaces-of-typescript-declarations/168-using-target-to-change-lib-d-ts.problem.ts similarity index 100% rename from src/075-designing-your-types/168-multiple-type-parameters.problem.ts rename to src/065-four-spaces-of-typescript-declarations/168-using-target-to-change-lib-d-ts.problem.ts diff --git a/src/075-designing-your-types/168-multiple-type-parameters.solution.ts b/src/065-four-spaces-of-typescript-declarations/168-using-target-to-change-lib-d-ts.solution.ts similarity index 100% rename from src/075-designing-your-types/168-multiple-type-parameters.solution.ts rename to src/065-four-spaces-of-typescript-declarations/168-using-target-to-change-lib-d-ts.solution.ts diff --git a/src/075-designing-your-types/169-default-type-parameters.problem.ts b/src/065-four-spaces-of-typescript-declarations/169-lib-dom-d-ts.problem.ts similarity index 100% rename from src/075-designing-your-types/169-default-type-parameters.problem.ts rename to src/065-four-spaces-of-typescript-declarations/169-lib-dom-d-ts.problem.ts diff --git a/src/075-designing-your-types/169-default-type-parameters.solution.ts b/src/065-four-spaces-of-typescript-declarations/169-lib-dom-d-ts.solution.ts similarity index 100% rename from src/075-designing-your-types/169-default-type-parameters.solution.ts rename to src/065-four-spaces-of-typescript-declarations/169-lib-dom-d-ts.solution.ts diff --git a/src/075-designing-your-types/170-type-helper-constraints.problem.ts b/src/065-four-spaces-of-typescript-declarations/170-third-party-types.problem.ts similarity index 100% rename from src/075-designing-your-types/170-type-helper-constraints.problem.ts rename to src/065-four-spaces-of-typescript-declarations/170-third-party-types.problem.ts diff --git a/src/075-designing-your-types/170-type-helper-constraints.solution.ts b/src/065-four-spaces-of-typescript-declarations/170-third-party-types.solution.ts similarity index 100% rename from src/075-designing-your-types/170-type-helper-constraints.solution.ts rename to src/065-four-spaces-of-typescript-declarations/170-third-party-types.solution.ts diff --git a/src/075-designing-your-types/171-tighter-version-of-omit.problem.ts b/src/065-four-spaces-of-typescript-declarations/171-type-roots-in-tsconfig.problem.ts similarity index 100% rename from src/075-designing-your-types/171-tighter-version-of-omit.problem.ts rename to src/065-four-spaces-of-typescript-declarations/171-type-roots-in-tsconfig.problem.ts diff --git a/src/075-designing-your-types/171-tighter-version-of-omit.solution.ts b/src/065-four-spaces-of-typescript-declarations/171-type-roots-in-tsconfig.solution.ts similarity index 100% rename from src/075-designing-your-types/171-tighter-version-of-omit.solution.ts rename to src/065-four-spaces-of-typescript-declarations/171-type-roots-in-tsconfig.solution.ts diff --git a/src/075-designing-your-types/172-template-literal-types.problem.ts b/src/065-four-spaces-of-typescript-declarations/172-types-that-ship-with-libraries.problem.ts similarity index 100% rename from src/075-designing-your-types/172-template-literal-types.problem.ts rename to src/065-four-spaces-of-typescript-declarations/172-types-that-ship-with-libraries.problem.ts diff --git a/src/075-designing-your-types/172-template-literal-types.solution.ts b/src/065-four-spaces-of-typescript-declarations/172-types-that-ship-with-libraries.solution.ts similarity index 100% rename from src/075-designing-your-types/172-template-literal-types.solution.ts rename to src/065-four-spaces-of-typescript-declarations/172-types-that-ship-with-libraries.solution.ts diff --git a/src/075-designing-your-types/173-passing-unions-to-template-literal-types.problem.ts b/src/075-designing-your-types/173-domain-modelling-in-typescript.problem.ts similarity index 100% rename from src/075-designing-your-types/173-passing-unions-to-template-literal-types.problem.ts rename to src/075-designing-your-types/173-domain-modelling-in-typescript.problem.ts diff --git a/src/075-designing-your-types/173-passing-unions-to-template-literal-types.solution.ts b/src/075-designing-your-types/173-domain-modelling-in-typescript.solution.ts similarity index 100% rename from src/075-designing-your-types/173-passing-unions-to-template-literal-types.solution.ts rename to src/075-designing-your-types/173-domain-modelling-in-typescript.solution.ts diff --git a/src/080-configuring-typescript/174-introduction-to-tsconfig.problem.ts b/src/075-designing-your-types/174-intro-to-helper-types.problem.ts similarity index 100% rename from src/080-configuring-typescript/174-introduction-to-tsconfig.problem.ts rename to src/075-designing-your-types/174-intro-to-helper-types.problem.ts diff --git a/src/080-configuring-typescript/174-introduction-to-tsconfig.solution.ts b/src/075-designing-your-types/174-intro-to-helper-types.solution.ts similarity index 100% rename from src/080-configuring-typescript/174-introduction-to-tsconfig.solution.ts rename to src/075-designing-your-types/174-intro-to-helper-types.solution.ts diff --git a/src/080-configuring-typescript/175-tsconfig-bases.problem.ts b/src/075-designing-your-types/175-multiple-type-parameters.problem.ts similarity index 100% rename from src/080-configuring-typescript/175-tsconfig-bases.problem.ts rename to src/075-designing-your-types/175-multiple-type-parameters.problem.ts diff --git a/src/080-configuring-typescript/175-tsconfig-bases.solution.ts b/src/075-designing-your-types/175-multiple-type-parameters.solution.ts similarity index 100% rename from src/080-configuring-typescript/175-tsconfig-bases.solution.ts rename to src/075-designing-your-types/175-multiple-type-parameters.solution.ts diff --git a/src/080-configuring-typescript/176-multiple-tsconfig-json-files.problem.ts b/src/075-designing-your-types/176-default-type-parameters.problem.ts similarity index 100% rename from src/080-configuring-typescript/176-multiple-tsconfig-json-files.problem.ts rename to src/075-designing-your-types/176-default-type-parameters.problem.ts diff --git a/src/080-configuring-typescript/176-multiple-tsconfig-json-files.solution.ts b/src/075-designing-your-types/176-default-type-parameters.solution.ts similarity index 100% rename from src/080-configuring-typescript/176-multiple-tsconfig-json-files.solution.ts rename to src/075-designing-your-types/176-default-type-parameters.solution.ts diff --git a/src/080-configuring-typescript/177-extending-from-other-tsconfig-json-files.problem.ts b/src/075-designing-your-types/177-type-helper-constraints.problem.ts similarity index 100% rename from src/080-configuring-typescript/177-extending-from-other-tsconfig-json-files.problem.ts rename to src/075-designing-your-types/177-type-helper-constraints.problem.ts diff --git a/src/080-configuring-typescript/177-extending-from-other-tsconfig-json-files.solution.ts b/src/075-designing-your-types/177-type-helper-constraints.solution.ts similarity index 100% rename from src/080-configuring-typescript/177-extending-from-other-tsconfig-json-files.solution.ts rename to src/075-designing-your-types/177-type-helper-constraints.solution.ts diff --git a/src/080-configuring-typescript/178-project-references.problem.ts b/src/075-designing-your-types/178-tighter-version-of-omit.problem.ts similarity index 100% rename from src/080-configuring-typescript/178-project-references.problem.ts rename to src/075-designing-your-types/178-tighter-version-of-omit.problem.ts diff --git a/src/080-configuring-typescript/178-project-references.solution.ts b/src/075-designing-your-types/178-tighter-version-of-omit.solution.ts similarity index 100% rename from src/080-configuring-typescript/178-project-references.solution.ts rename to src/075-designing-your-types/178-tighter-version-of-omit.solution.ts diff --git a/src/080-configuring-typescript/179-jsx.problem.ts b/src/075-designing-your-types/179-template-literal-types.problem.ts similarity index 100% rename from src/080-configuring-typescript/179-jsx.problem.ts rename to src/075-designing-your-types/179-template-literal-types.problem.ts diff --git a/src/080-configuring-typescript/179-jsx.solution.ts b/src/075-designing-your-types/179-template-literal-types.solution.ts similarity index 100% rename from src/080-configuring-typescript/179-jsx.solution.ts rename to src/075-designing-your-types/179-template-literal-types.solution.ts diff --git a/src/080-configuring-typescript/180-rules-that-make-up-strict-mode.problem.ts b/src/075-designing-your-types/180-passing-unions-to-template-literal-types.problem.ts similarity index 100% rename from src/080-configuring-typescript/180-rules-that-make-up-strict-mode.problem.ts rename to src/075-designing-your-types/180-passing-unions-to-template-literal-types.problem.ts diff --git a/src/080-configuring-typescript/180-rules-that-make-up-strict-mode.solution.ts b/src/075-designing-your-types/180-passing-unions-to-template-literal-types.solution.ts similarity index 100% rename from src/080-configuring-typescript/180-rules-that-make-up-strict-mode.solution.ts rename to src/075-designing-your-types/180-passing-unions-to-template-literal-types.solution.ts diff --git a/src/080-configuring-typescript/181-no-unchecked-indexed-access.problem.ts b/src/075-designing-your-types/181-mapped-types.problem.ts similarity index 100% rename from src/080-configuring-typescript/181-no-unchecked-indexed-access.problem.ts rename to src/075-designing-your-types/181-mapped-types.problem.ts diff --git a/src/080-configuring-typescript/181-no-unchecked-indexed-access.solution.ts b/src/075-designing-your-types/181-mapped-types.solution.ts similarity index 100% rename from src/080-configuring-typescript/181-no-unchecked-indexed-access.solution.ts rename to src/075-designing-your-types/181-mapped-types.solution.ts diff --git a/src/080-configuring-typescript/182-creating-declaration-files-and-declaration-maps.problem.ts b/src/075-designing-your-types/182-as-in-mapped-types.problem.ts similarity index 100% rename from src/080-configuring-typescript/182-creating-declaration-files-and-declaration-maps.problem.ts rename to src/075-designing-your-types/182-as-in-mapped-types.problem.ts diff --git a/src/080-configuring-typescript/182-creating-declaration-files-and-declaration-maps.solution.ts b/src/075-designing-your-types/182-as-in-mapped-types.solution.ts similarity index 100% rename from src/080-configuring-typescript/182-creating-declaration-files-and-declaration-maps.solution.ts rename to src/075-designing-your-types/182-as-in-mapped-types.solution.ts diff --git a/src/080-configuring-typescript/183-setting-up-types-for-node.problem.ts b/src/080-configuring-typescript/183-introduction-to-tsconfig.problem.ts similarity index 100% rename from src/080-configuring-typescript/183-setting-up-types-for-node.problem.ts rename to src/080-configuring-typescript/183-introduction-to-tsconfig.problem.ts diff --git a/src/080-configuring-typescript/183-setting-up-types-for-node.solution.ts b/src/080-configuring-typescript/183-introduction-to-tsconfig.solution.ts similarity index 100% rename from src/080-configuring-typescript/183-setting-up-types-for-node.solution.ts rename to src/080-configuring-typescript/183-introduction-to-tsconfig.solution.ts diff --git a/src/080-configuring-typescript/184-set-up-types-for-simple-scripts.problem.ts b/src/080-configuring-typescript/184-tsconfig-bases.problem.ts similarity index 100% rename from src/080-configuring-typescript/184-set-up-types-for-simple-scripts.problem.ts rename to src/080-configuring-typescript/184-tsconfig-bases.problem.ts diff --git a/src/080-configuring-typescript/184-set-up-types-for-simple-scripts.solution.ts b/src/080-configuring-typescript/184-tsconfig-bases.solution.ts similarity index 100% rename from src/080-configuring-typescript/184-set-up-types-for-simple-scripts.solution.ts rename to src/080-configuring-typescript/184-tsconfig-bases.solution.ts diff --git a/src/080-configuring-typescript/185-set-up-types-for-test-files.problem.ts b/src/080-configuring-typescript/185-multiple-tsconfig-json-files.problem.ts similarity index 100% rename from src/080-configuring-typescript/185-set-up-types-for-test-files.problem.ts rename to src/080-configuring-typescript/185-multiple-tsconfig-json-files.problem.ts diff --git a/src/080-configuring-typescript/185-set-up-types-for-test-files.solution.ts b/src/080-configuring-typescript/185-multiple-tsconfig-json-files.solution.ts similarity index 100% rename from src/080-configuring-typescript/185-set-up-types-for-test-files.solution.ts rename to src/080-configuring-typescript/185-multiple-tsconfig-json-files.solution.ts diff --git a/src/080-configuring-typescript/186-set-up-types-for-bundled-web-app.problem.ts b/src/080-configuring-typescript/186-extending-from-other-tsconfig-json-files.problem.ts similarity index 100% rename from src/080-configuring-typescript/186-set-up-types-for-bundled-web-app.problem.ts rename to src/080-configuring-typescript/186-extending-from-other-tsconfig-json-files.problem.ts diff --git a/src/080-configuring-typescript/186-set-up-types-for-bundled-web-app.solution.ts b/src/080-configuring-typescript/186-extending-from-other-tsconfig-json-files.solution.ts similarity index 100% rename from src/080-configuring-typescript/186-set-up-types-for-bundled-web-app.solution.ts rename to src/080-configuring-typescript/186-extending-from-other-tsconfig-json-files.solution.ts diff --git a/src/085-the-utils-folder/187-intro-to-the-utils-folder.problem.ts b/src/080-configuring-typescript/187-project-references.problem.ts similarity index 100% rename from src/085-the-utils-folder/187-intro-to-the-utils-folder.problem.ts rename to src/080-configuring-typescript/187-project-references.problem.ts diff --git a/src/085-the-utils-folder/187-intro-to-the-utils-folder.solution.ts b/src/080-configuring-typescript/187-project-references.solution.ts similarity index 100% rename from src/085-the-utils-folder/187-intro-to-the-utils-folder.solution.ts rename to src/080-configuring-typescript/187-project-references.solution.ts diff --git a/src/085-the-utils-folder/188-generic-functions-without-inference.problem.ts b/src/080-configuring-typescript/188-jsx.problem.ts similarity index 100% rename from src/085-the-utils-folder/188-generic-functions-without-inference.problem.ts rename to src/080-configuring-typescript/188-jsx.problem.ts diff --git a/src/085-the-utils-folder/188-generic-functions-without-inference.solution.ts b/src/080-configuring-typescript/188-jsx.solution.ts similarity index 100% rename from src/085-the-utils-folder/188-generic-functions-without-inference.solution.ts rename to src/080-configuring-typescript/188-jsx.solution.ts diff --git a/src/085-the-utils-folder/189-type-parameter-defaults-in-generic-functions.problem.ts b/src/080-configuring-typescript/189-rules-that-make-up-strict-mode.problem.ts similarity index 100% rename from src/085-the-utils-folder/189-type-parameter-defaults-in-generic-functions.problem.ts rename to src/080-configuring-typescript/189-rules-that-make-up-strict-mode.problem.ts diff --git a/src/085-the-utils-folder/189-type-parameter-defaults-in-generic-functions.solution.ts b/src/080-configuring-typescript/189-rules-that-make-up-strict-mode.solution.ts similarity index 100% rename from src/085-the-utils-folder/189-type-parameter-defaults-in-generic-functions.solution.ts rename to src/080-configuring-typescript/189-rules-that-make-up-strict-mode.solution.ts diff --git a/src/085-the-utils-folder/190-type-parameter-constraints-with-generic-functions.problem.ts b/src/080-configuring-typescript/190-no-unchecked-indexed-access.problem.ts similarity index 100% rename from src/085-the-utils-folder/190-type-parameter-constraints-with-generic-functions.problem.ts rename to src/080-configuring-typescript/190-no-unchecked-indexed-access.problem.ts diff --git a/src/085-the-utils-folder/190-type-parameter-constraints-with-generic-functions.solution.ts b/src/080-configuring-typescript/190-no-unchecked-indexed-access.solution.ts similarity index 100% rename from src/085-the-utils-folder/190-type-parameter-constraints-with-generic-functions.solution.ts rename to src/080-configuring-typescript/190-no-unchecked-indexed-access.solution.ts diff --git a/src/085-the-utils-folder/191-generic-functions-with-inference.problem.ts b/src/080-configuring-typescript/191-creating-declaration-files-and-declaration-maps.problem.ts similarity index 100% rename from src/085-the-utils-folder/191-generic-functions-with-inference.problem.ts rename to src/080-configuring-typescript/191-creating-declaration-files-and-declaration-maps.problem.ts diff --git a/src/085-the-utils-folder/191-generic-functions-with-inference.solution.ts b/src/080-configuring-typescript/191-creating-declaration-files-and-declaration-maps.solution.ts similarity index 100% rename from src/085-the-utils-folder/191-generic-functions-with-inference.solution.ts rename to src/080-configuring-typescript/191-creating-declaration-files-and-declaration-maps.solution.ts diff --git a/src/085-the-utils-folder/192-multiple-type-arguments.problem.ts b/src/080-configuring-typescript/192-setting-up-types-for-node.problem.ts similarity index 100% rename from src/085-the-utils-folder/192-multiple-type-arguments.problem.ts rename to src/080-configuring-typescript/192-setting-up-types-for-node.problem.ts diff --git a/src/085-the-utils-folder/192-multiple-type-arguments.solution.ts b/src/080-configuring-typescript/192-setting-up-types-for-node.solution.ts similarity index 100% rename from src/085-the-utils-folder/192-multiple-type-arguments.solution.ts rename to src/080-configuring-typescript/192-setting-up-types-for-node.solution.ts diff --git a/src/085-the-utils-folder/193-create-group-by-function.problem.ts b/src/080-configuring-typescript/193-set-up-types-for-simple-scripts.problem.ts similarity index 100% rename from src/085-the-utils-folder/193-create-group-by-function.problem.ts rename to src/080-configuring-typescript/193-set-up-types-for-simple-scripts.problem.ts diff --git a/src/085-the-utils-folder/193-create-group-by-function.solution.ts b/src/080-configuring-typescript/193-set-up-types-for-simple-scripts.solution.ts similarity index 100% rename from src/085-the-utils-folder/193-create-group-by-function.solution.ts rename to src/080-configuring-typescript/193-set-up-types-for-simple-scripts.solution.ts diff --git a/src/085-the-utils-folder/194-type-predicates.problem.ts b/src/080-configuring-typescript/194-set-up-types-for-test-files.problem.ts similarity index 100% rename from src/085-the-utils-folder/194-type-predicates.problem.ts rename to src/080-configuring-typescript/194-set-up-types-for-test-files.problem.ts diff --git a/src/085-the-utils-folder/194-type-predicates.solution.ts b/src/080-configuring-typescript/194-set-up-types-for-test-files.solution.ts similarity index 100% rename from src/085-the-utils-folder/194-type-predicates.solution.ts rename to src/080-configuring-typescript/194-set-up-types-for-test-files.solution.ts diff --git a/src/085-the-utils-folder/195-assertion-functions.problem.ts b/src/080-configuring-typescript/195-set-up-types-for-bundled-web-app.problem.ts similarity index 100% rename from src/085-the-utils-folder/195-assertion-functions.problem.ts rename to src/080-configuring-typescript/195-set-up-types-for-bundled-web-app.problem.ts diff --git a/src/085-the-utils-folder/195-assertion-functions.solution.ts b/src/080-configuring-typescript/195-set-up-types-for-bundled-web-app.solution.ts similarity index 100% rename from src/085-the-utils-folder/195-assertion-functions.solution.ts rename to src/080-configuring-typescript/195-set-up-types-for-bundled-web-app.solution.ts diff --git a/src/090-the-style-guide/196-hungarian-notation.problem.ts b/src/085-the-utils-folder/196-intro-to-the-utils-folder.problem.ts similarity index 100% rename from src/090-the-style-guide/196-hungarian-notation.problem.ts rename to src/085-the-utils-folder/196-intro-to-the-utils-folder.problem.ts diff --git a/src/090-the-style-guide/196-hungarian-notation.solution.ts b/src/085-the-utils-folder/196-intro-to-the-utils-folder.solution.ts similarity index 100% rename from src/090-the-style-guide/196-hungarian-notation.solution.ts rename to src/085-the-utils-folder/196-intro-to-the-utils-folder.solution.ts diff --git a/src/090-the-style-guide/197-where-to-put-your-types.problem.ts b/src/085-the-utils-folder/197-generic-functions-without-inference.problem.ts similarity index 100% rename from src/090-the-style-guide/197-where-to-put-your-types.problem.ts rename to src/085-the-utils-folder/197-generic-functions-without-inference.problem.ts diff --git a/src/090-the-style-guide/197-where-to-put-your-types.solution.ts b/src/085-the-utils-folder/197-generic-functions-without-inference.solution.ts similarity index 100% rename from src/090-the-style-guide/197-where-to-put-your-types.solution.ts rename to src/085-the-utils-folder/197-generic-functions-without-inference.solution.ts diff --git a/src/090-the-style-guide/198-colocation-of-types.problem.ts b/src/085-the-utils-folder/198-type-parameter-defaults-in-generic-functions.problem.ts similarity index 100% rename from src/090-the-style-guide/198-colocation-of-types.problem.ts rename to src/085-the-utils-folder/198-type-parameter-defaults-in-generic-functions.problem.ts diff --git a/src/090-the-style-guide/198-colocation-of-types.solution.ts b/src/085-the-utils-folder/198-type-parameter-defaults-in-generic-functions.solution.ts similarity index 100% rename from src/090-the-style-guide/198-colocation-of-types.solution.ts rename to src/085-the-utils-folder/198-type-parameter-defaults-in-generic-functions.solution.ts diff --git a/src/095-migrating-from-javascript/199-strict-file-by-file-vs-ramp-up-strictness.problem.ts b/src/085-the-utils-folder/199-type-parameter-constraints-with-generic-functions.problem.ts similarity index 100% rename from src/095-migrating-from-javascript/199-strict-file-by-file-vs-ramp-up-strictness.problem.ts rename to src/085-the-utils-folder/199-type-parameter-constraints-with-generic-functions.problem.ts diff --git a/src/095-migrating-from-javascript/199-strict-file-by-file-vs-ramp-up-strictness.solution.ts b/src/085-the-utils-folder/199-type-parameter-constraints-with-generic-functions.solution.ts similarity index 100% rename from src/095-migrating-from-javascript/199-strict-file-by-file-vs-ramp-up-strictness.solution.ts rename to src/085-the-utils-folder/199-type-parameter-constraints-with-generic-functions.solution.ts diff --git a/src/095-migrating-from-javascript/200-dependencies-first.problem.ts b/src/085-the-utils-folder/200-generic-functions-with-inference.problem.ts similarity index 100% rename from src/095-migrating-from-javascript/200-dependencies-first.problem.ts rename to src/085-the-utils-folder/200-generic-functions-with-inference.problem.ts diff --git a/src/095-migrating-from-javascript/200-dependencies-first.solution.ts b/src/085-the-utils-folder/200-generic-functions-with-inference.solution.ts similarity index 100% rename from src/095-migrating-from-javascript/200-dependencies-first.solution.ts rename to src/085-the-utils-folder/200-generic-functions-with-inference.solution.ts diff --git a/src/095-migrating-from-javascript/201-madge.problem.ts b/src/085-the-utils-folder/201-multiple-type-arguments.problem.ts similarity index 100% rename from src/095-migrating-from-javascript/201-madge.problem.ts rename to src/085-the-utils-folder/201-multiple-type-arguments.problem.ts diff --git a/src/095-migrating-from-javascript/201-madge.solution.ts b/src/085-the-utils-folder/201-multiple-type-arguments.solution.ts similarity index 100% rename from src/095-migrating-from-javascript/201-madge.solution.ts rename to src/085-the-utils-folder/201-multiple-type-arguments.solution.ts diff --git a/src/085-the-utils-folder/202-create-group-by-function.problem.ts b/src/085-the-utils-folder/202-create-group-by-function.problem.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/085-the-utils-folder/202-create-group-by-function.solution.ts b/src/085-the-utils-folder/202-create-group-by-function.solution.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/085-the-utils-folder/203-type-predicates.problem.ts b/src/085-the-utils-folder/203-type-predicates.problem.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/085-the-utils-folder/203-type-predicates.solution.ts b/src/085-the-utils-folder/203-type-predicates.solution.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/085-the-utils-folder/204-assertion-functions.problem.ts b/src/085-the-utils-folder/204-assertion-functions.problem.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/085-the-utils-folder/204-assertion-functions.solution.ts b/src/085-the-utils-folder/204-assertion-functions.solution.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/090-the-style-guide/205-setting-up-eslint.problem.ts b/src/090-the-style-guide/205-setting-up-eslint.problem.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/090-the-style-guide/205-setting-up-eslint.solution.ts b/src/090-the-style-guide/205-setting-up-eslint.solution.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/090-the-style-guide/206-hungarian-notation.problem.ts b/src/090-the-style-guide/206-hungarian-notation.problem.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/090-the-style-guide/206-hungarian-notation.solution.ts b/src/090-the-style-guide/206-hungarian-notation.solution.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/090-the-style-guide/207-where-to-put-your-types.problem.ts b/src/090-the-style-guide/207-where-to-put-your-types.problem.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/090-the-style-guide/207-where-to-put-your-types.solution.ts b/src/090-the-style-guide/207-where-to-put-your-types.solution.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/090-the-style-guide/208-colocation-of-types.problem.ts b/src/090-the-style-guide/208-colocation-of-types.problem.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/090-the-style-guide/208-colocation-of-types.solution.ts b/src/090-the-style-guide/208-colocation-of-types.solution.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/090-the-style-guide/209-explicit-any-rule-or-not.problem.ts b/src/090-the-style-guide/209-explicit-any-rule-or-not.problem.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/090-the-style-guide/209-explicit-any-rule-or-not.solution.ts b/src/090-the-style-guide/209-explicit-any-rule-or-not.solution.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/090-the-style-guide/210-explicit-return-types-or-not.problem.ts b/src/090-the-style-guide/210-explicit-return-types-or-not.problem.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/090-the-style-guide/210-explicit-return-types-or-not.solution.ts b/src/090-the-style-guide/210-explicit-return-types-or-not.solution.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/090-the-style-guide/211-any-vs-ts-ignore-vs-ts-expect-error.problem.ts b/src/090-the-style-guide/211-any-vs-ts-ignore-vs-ts-expect-error.problem.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/090-the-style-guide/211-any-vs-ts-ignore-vs-ts-expect-error.solution.ts b/src/090-the-style-guide/211-any-vs-ts-ignore-vs-ts-expect-error.solution.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/090-the-style-guide/212-result-type.problem.ts b/src/090-the-style-guide/212-result-type.problem.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/090-the-style-guide/212-result-type.solution.ts b/src/090-the-style-guide/212-result-type.solution.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/095-migrating-from-javascript/213-strict-file-by-file-vs-ramp-up-strictness.problem.ts b/src/095-migrating-from-javascript/213-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/213-strict-file-by-file-vs-ramp-up-strictness.solution.ts b/src/095-migrating-from-javascript/213-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/214-dependencies-first.problem.ts b/src/095-migrating-from-javascript/214-dependencies-first.problem.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/095-migrating-from-javascript/214-dependencies-first.solution.ts b/src/095-migrating-from-javascript/214-dependencies-first.solution.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/095-migrating-from-javascript/215-madge.problem.ts b/src/095-migrating-from-javascript/215-madge.problem.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/095-migrating-from-javascript/215-madge.solution.ts b/src/095-migrating-from-javascript/215-madge.solution.ts new file mode 100644 index 0000000..e69de29