From 60b236bb662ae8c308c65671bd4217bcd9782411 Mon Sep 17 00:00:00 2001 From: Matt Pocock Date: Mon, 18 Sep 2023 12:50:00 +0100 Subject: [PATCH] 2023-09-18T11:50:00.812Z --- .../src/index.js | 4 ++-- .../src/index.js | 6 +++--- .../207-mts-files.problem/src/index.ts | 4 ++-- .../207-mts-files.solution/src/index.ts | 4 ++-- .../209-treat-ts-files-as-esm.problem/package.json | 12 ++++++++++++ .../src/esm-module.ts | 5 +++++ .../209-treat-ts-files-as-esm.problem/src/index.ts | 7 +++++++ .../209-treat-ts-files-as-esm.problem/tsconfig.json | 13 +++++++++++++ .../209-treat-ts-files-as-esm.solution/package.json | 13 +++++++++++++ .../src/esm-module.ts | 5 +++++ .../209-treat-ts-files-as-esm.solution/src/index.ts | 7 +++++++ .../tsconfig.json | 13 +++++++++++++ ....ts => 210-intro-to-the-utils-folder.problem.ts} | 0 ...ts => 210-intro-to-the-utils-folder.solution.ts} | 0 ...-generic-functions-without-inference.problem.ts} | 0 ...generic-functions-without-inference.solution.ts} | 0 ...ameter-defaults-in-generic-functions.problem.ts} | 0 ...meter-defaults-in-generic-functions.solution.ts} | 0 ...r-constraints-with-generic-functions.problem.ts} | 0 ...-constraints-with-generic-functions.solution.ts} | 0 ...214-generic-functions-with-inference.problem.ts} | 0 ...14-generic-functions-with-inference.solution.ts} | 0 ... 215-as-any-inside-generic-functions.problem.ts} | 0 ...215-as-any-inside-generic-functions.solution.ts} | 0 ...em.ts => 216-multiple-type-arguments.problem.ts} | 0 ...n.ts => 216-multiple-type-arguments.solution.ts} | 0 ...m.ts => 217-create-group-by-function.problem.ts} | 0 ....ts => 217-create-group-by-function.solution.ts} | 0 ...es.problem.ts => 218-type-predicates.problem.ts} | 0 ....solution.ts => 218-type-predicates.solution.ts} | 0 ...roblem.ts => 219-assertion-functions.problem.ts} | 0 ...ution.ts => 219-assertion-functions.solution.ts} | 0 ...problem.ts => 220-function-overloads.problem.ts} | 0 ...lution.ts => 220-function-overloads.solution.ts} | 0 ...problem.ts => 221-hungarian-notation.problem.ts} | 0 ...lution.ts => 221-hungarian-notation.solution.ts} | 0 ...em.ts => 222-where-to-put-your-types.problem.ts} | 0 ...n.ts => 222-where-to-put-your-types.solution.ts} | 0 ...roblem.ts => 223-colocation-of-types.problem.ts} | 0 ...ution.ts => 223-colocation-of-types.solution.ts} | 0 ...lainer.ts => 224-setting-up-eslint.explainer.ts} | 0 ...m.ts => 225-explicit-any-rule-or-not.problem.ts} | 0 ....ts => 225-explicit-any-rule-or-not.solution.ts} | 0 ... => 226-explicit-return-types-or-not.problem.ts} | 0 ...=> 226-explicit-return-types-or-not.solution.ts} | 0 ...-any-vs-ts-ignore-vs-ts-expect-error.problem.ts} | 0 ...any-vs-ts-ignore-vs-ts-expect-error.solution.ts} | 0 ...re-type-and-value-with-the-same-name.problem.ts} | 0 ...e-type-and-value-with-the-same-name.solution.ts} | 0 ...roblem.ts => 229-types-vs-interfaces.problem.ts} | 0 ...ution.ts => 229-types-vs-interfaces.solution.ts} | 0 ...ction-object-string-boolean-as-types.problem.ts} | 0 ...tion-object-string-boolean-as-types.solution.ts} | 0 ...31-dont-use-globally-available-types.problem.ts} | 0 ...1-dont-use-globally-available-types.solution.ts} | 0 ...2-how-strict-should-you-configure-ts.problem.ts} | 0 ...-how-strict-should-you-configure-ts.solution.ts} | 0 ...> 233-dont-unnecessarily-widen-types.problem.ts} | 0 ... 233-dont-unnecessarily-widen-types.solution.ts} | 0 ...t-file-by-file-vs-ramp-up-strictness.problem.ts} | 0 ...-file-by-file-vs-ramp-up-strictness.solution.ts} | 0 ...problem.ts => 235-dependencies-first.problem.ts} | 0 ...lution.ts => 235-dependencies-first.solution.ts} | 0 ...ts => 236-typing-third-party-modules.problem.ts} | 0 ...s => 236-typing-third-party-modules.solution.ts} | 0 .../{236-madge.problem.ts => 237-madge.problem.ts} | 0 ...{236-madge.solution.ts => 237-madge.solution.ts} | 0 ...rstanding-the-structure-of-ts-errors.problem.ts} | 0 ...standing-the-structure-of-ts-errors.solution.ts} | 0 ...lem.ts => 239-experiments-with-jsdoc.problem.ts} | 0 ...on.ts => 239-experiments-with-jsdoc.solution.ts} | 0 ...jsdoc-cannot-pass-types-to-functions.problem.ts} | 0 ...sdoc-cannot-pass-types-to-functions.solution.ts} | 0 73 files changed, 84 insertions(+), 9 deletions(-) create mode 100644 src/082-cjs-vs-esm/209-treat-ts-files-as-esm.problem/package.json create mode 100644 src/082-cjs-vs-esm/209-treat-ts-files-as-esm.problem/src/esm-module.ts create mode 100644 src/082-cjs-vs-esm/209-treat-ts-files-as-esm.problem/src/index.ts create mode 100644 src/082-cjs-vs-esm/209-treat-ts-files-as-esm.problem/tsconfig.json create mode 100644 src/082-cjs-vs-esm/209-treat-ts-files-as-esm.solution/package.json create mode 100644 src/082-cjs-vs-esm/209-treat-ts-files-as-esm.solution/src/esm-module.ts create mode 100644 src/082-cjs-vs-esm/209-treat-ts-files-as-esm.solution/src/index.ts create mode 100644 src/082-cjs-vs-esm/209-treat-ts-files-as-esm.solution/tsconfig.json rename src/085-the-utils-folder/{209-intro-to-the-utils-folder.problem.ts => 210-intro-to-the-utils-folder.problem.ts} (100%) rename src/085-the-utils-folder/{209-intro-to-the-utils-folder.solution.ts => 210-intro-to-the-utils-folder.solution.ts} (100%) rename src/085-the-utils-folder/{210-generic-functions-without-inference.problem.ts => 211-generic-functions-without-inference.problem.ts} (100%) rename src/085-the-utils-folder/{210-generic-functions-without-inference.solution.ts => 211-generic-functions-without-inference.solution.ts} (100%) rename src/085-the-utils-folder/{211-type-parameter-defaults-in-generic-functions.problem.ts => 212-type-parameter-defaults-in-generic-functions.problem.ts} (100%) rename src/085-the-utils-folder/{211-type-parameter-defaults-in-generic-functions.solution.ts => 212-type-parameter-defaults-in-generic-functions.solution.ts} (100%) rename src/085-the-utils-folder/{212-type-parameter-constraints-with-generic-functions.problem.ts => 213-type-parameter-constraints-with-generic-functions.problem.ts} (100%) rename src/085-the-utils-folder/{212-type-parameter-constraints-with-generic-functions.solution.ts => 213-type-parameter-constraints-with-generic-functions.solution.ts} (100%) rename src/085-the-utils-folder/{213-generic-functions-with-inference.problem.ts => 214-generic-functions-with-inference.problem.ts} (100%) rename src/085-the-utils-folder/{213-generic-functions-with-inference.solution.ts => 214-generic-functions-with-inference.solution.ts} (100%) rename src/085-the-utils-folder/{214-as-any-inside-generic-functions.problem.ts => 215-as-any-inside-generic-functions.problem.ts} (100%) rename src/085-the-utils-folder/{214-as-any-inside-generic-functions.solution.ts => 215-as-any-inside-generic-functions.solution.ts} (100%) rename src/085-the-utils-folder/{215-multiple-type-arguments.problem.ts => 216-multiple-type-arguments.problem.ts} (100%) rename src/085-the-utils-folder/{215-multiple-type-arguments.solution.ts => 216-multiple-type-arguments.solution.ts} (100%) rename src/085-the-utils-folder/{216-create-group-by-function.problem.ts => 217-create-group-by-function.problem.ts} (100%) rename src/085-the-utils-folder/{216-create-group-by-function.solution.ts => 217-create-group-by-function.solution.ts} (100%) rename src/085-the-utils-folder/{217-type-predicates.problem.ts => 218-type-predicates.problem.ts} (100%) rename src/085-the-utils-folder/{217-type-predicates.solution.ts => 218-type-predicates.solution.ts} (100%) rename src/085-the-utils-folder/{218-assertion-functions.problem.ts => 219-assertion-functions.problem.ts} (100%) rename src/085-the-utils-folder/{218-assertion-functions.solution.ts => 219-assertion-functions.solution.ts} (100%) rename src/085-the-utils-folder/{219-function-overloads.problem.ts => 220-function-overloads.problem.ts} (100%) rename src/085-the-utils-folder/{219-function-overloads.solution.ts => 220-function-overloads.solution.ts} (100%) rename src/090-the-style-guide/{220-hungarian-notation.problem.ts => 221-hungarian-notation.problem.ts} (100%) rename src/090-the-style-guide/{220-hungarian-notation.solution.ts => 221-hungarian-notation.solution.ts} (100%) rename src/090-the-style-guide/{221-where-to-put-your-types.problem.ts => 222-where-to-put-your-types.problem.ts} (100%) rename src/090-the-style-guide/{221-where-to-put-your-types.solution.ts => 222-where-to-put-your-types.solution.ts} (100%) rename src/090-the-style-guide/{222-colocation-of-types.problem.ts => 223-colocation-of-types.problem.ts} (100%) rename src/090-the-style-guide/{222-colocation-of-types.solution.ts => 223-colocation-of-types.solution.ts} (100%) rename src/090-the-style-guide/{223-setting-up-eslint.explainer.ts => 224-setting-up-eslint.explainer.ts} (100%) rename src/090-the-style-guide/{224-explicit-any-rule-or-not.problem.ts => 225-explicit-any-rule-or-not.problem.ts} (100%) rename src/090-the-style-guide/{224-explicit-any-rule-or-not.solution.ts => 225-explicit-any-rule-or-not.solution.ts} (100%) rename src/090-the-style-guide/{225-explicit-return-types-or-not.problem.ts => 226-explicit-return-types-or-not.problem.ts} (100%) rename src/090-the-style-guide/{225-explicit-return-types-or-not.solution.ts => 226-explicit-return-types-or-not.solution.ts} (100%) rename src/090-the-style-guide/{226-any-vs-ts-ignore-vs-ts-expect-error.problem.ts => 227-any-vs-ts-ignore-vs-ts-expect-error.problem.ts} (100%) rename src/090-the-style-guide/{226-any-vs-ts-ignore-vs-ts-expect-error.solution.ts => 227-any-vs-ts-ignore-vs-ts-expect-error.solution.ts} (100%) rename src/090-the-style-guide/{227-dont-declare-type-and-value-with-the-same-name.problem.ts => 228-dont-declare-type-and-value-with-the-same-name.problem.ts} (100%) rename src/090-the-style-guide/{227-dont-declare-type-and-value-with-the-same-name.solution.ts => 228-dont-declare-type-and-value-with-the-same-name.solution.ts} (100%) rename src/090-the-style-guide/{228-types-vs-interfaces.problem.ts => 229-types-vs-interfaces.problem.ts} (100%) rename src/090-the-style-guide/{228-types-vs-interfaces.solution.ts => 229-types-vs-interfaces.solution.ts} (100%) rename src/090-the-style-guide/{229-dont-use-uppercase-function-object-string-boolean-as-types.problem.ts => 230-dont-use-uppercase-function-object-string-boolean-as-types.problem.ts} (100%) rename src/090-the-style-guide/{229-dont-use-uppercase-function-object-string-boolean-as-types.solution.ts => 230-dont-use-uppercase-function-object-string-boolean-as-types.solution.ts} (100%) rename src/090-the-style-guide/{230-dont-use-globally-available-types.problem.ts => 231-dont-use-globally-available-types.problem.ts} (100%) rename src/090-the-style-guide/{230-dont-use-globally-available-types.solution.ts => 231-dont-use-globally-available-types.solution.ts} (100%) rename src/090-the-style-guide/{231-how-strict-should-you-configure-ts.problem.ts => 232-how-strict-should-you-configure-ts.problem.ts} (100%) rename src/090-the-style-guide/{231-how-strict-should-you-configure-ts.solution.ts => 232-how-strict-should-you-configure-ts.solution.ts} (100%) rename src/090-the-style-guide/{232-dont-unnecessarily-widen-types.problem.ts => 233-dont-unnecessarily-widen-types.problem.ts} (100%) rename src/090-the-style-guide/{232-dont-unnecessarily-widen-types.solution.ts => 233-dont-unnecessarily-widen-types.solution.ts} (100%) rename src/095-migrating-from-javascript/{233-strict-file-by-file-vs-ramp-up-strictness.problem.ts => 234-strict-file-by-file-vs-ramp-up-strictness.problem.ts} (100%) rename src/095-migrating-from-javascript/{233-strict-file-by-file-vs-ramp-up-strictness.solution.ts => 234-strict-file-by-file-vs-ramp-up-strictness.solution.ts} (100%) rename src/095-migrating-from-javascript/{234-dependencies-first.problem.ts => 235-dependencies-first.problem.ts} (100%) rename src/095-migrating-from-javascript/{234-dependencies-first.solution.ts => 235-dependencies-first.solution.ts} (100%) rename src/095-migrating-from-javascript/{235-typing-third-party-modules.problem.ts => 236-typing-third-party-modules.problem.ts} (100%) rename src/095-migrating-from-javascript/{235-typing-third-party-modules.solution.ts => 236-typing-third-party-modules.solution.ts} (100%) rename src/095-migrating-from-javascript/{236-madge.problem.ts => 237-madge.problem.ts} (100%) rename src/095-migrating-from-javascript/{236-madge.solution.ts => 237-madge.solution.ts} (100%) rename src/095-migrating-from-javascript/{237-understanding-the-structure-of-ts-errors.problem.ts => 238-understanding-the-structure-of-ts-errors.problem.ts} (100%) rename src/095-migrating-from-javascript/{237-understanding-the-structure-of-ts-errors.solution.ts => 238-understanding-the-structure-of-ts-errors.solution.ts} (100%) rename src/095-migrating-from-javascript/{238-experiments-with-jsdoc.problem.ts => 239-experiments-with-jsdoc.problem.ts} (100%) rename src/095-migrating-from-javascript/{238-experiments-with-jsdoc.solution.ts => 239-experiments-with-jsdoc.solution.ts} (100%) rename src/095-migrating-from-javascript/{239-jsdoc-cannot-pass-types-to-functions.problem.ts => 240-jsdoc-cannot-pass-types-to-functions.problem.ts} (100%) rename src/095-migrating-from-javascript/{239-jsdoc-cannot-pass-types-to-functions.solution.ts => 240-jsdoc-cannot-pass-types-to-functions.solution.ts} (100%) diff --git a/src/082-cjs-vs-esm/206-cant-import-esm-into-cjs.problem/src/index.js b/src/082-cjs-vs-esm/206-cant-import-esm-into-cjs.problem/src/index.js index 614955b..2e46e5d 100644 --- a/src/082-cjs-vs-esm/206-cant-import-esm-into-cjs.problem/src/index.js +++ b/src/082-cjs-vs-esm/206-cant-import-esm-into-cjs.problem/src/index.js @@ -1,7 +1,7 @@ -const esmModule = require("./esm-module.js"); // cjs require +const esModule = require("./esm-module.js"); // cjs require const main = async () => { - esmModule.default(); + esModule.default(); }; main(); diff --git a/src/082-cjs-vs-esm/206-cant-import-esm-into-cjs.solution/src/index.js b/src/082-cjs-vs-esm/206-cant-import-esm-into-cjs.solution/src/index.js index 7e3bcbd..0d1ae44 100644 --- a/src/082-cjs-vs-esm/206-cant-import-esm-into-cjs.solution/src/index.js +++ b/src/082-cjs-vs-esm/206-cant-import-esm-into-cjs.solution/src/index.js @@ -1,9 +1,9 @@ -// const esmModule = require("./esm-module.mjs"); // cjs require +// const esModule = require("./esm-module.mjs"); // cjs require const main = async () => { - const esmModule = await import("./esm-module.mjs"); // Dynamic import + const esModule = await import("./esm-module.mjs"); // Dynamic import - esmModule.default(); + esModule.default(); }; main(); diff --git a/src/082-cjs-vs-esm/207-mts-files.problem/src/index.ts b/src/082-cjs-vs-esm/207-mts-files.problem/src/index.ts index 39c800a..4aea5d3 100644 --- a/src/082-cjs-vs-esm/207-mts-files.problem/src/index.ts +++ b/src/082-cjs-vs-esm/207-mts-files.problem/src/index.ts @@ -1,7 +1,7 @@ const main = async () => { - const esmModule = await import("./esm-module.js"); // Dynamic import + const esModule = await import("./esm-module.js"); // Dynamic import - esmModule.default(); + esModule.default(); }; main(); diff --git a/src/082-cjs-vs-esm/207-mts-files.solution/src/index.ts b/src/082-cjs-vs-esm/207-mts-files.solution/src/index.ts index 7c4f341..e1b6fba 100644 --- a/src/082-cjs-vs-esm/207-mts-files.solution/src/index.ts +++ b/src/082-cjs-vs-esm/207-mts-files.solution/src/index.ts @@ -1,7 +1,7 @@ const main = async () => { - const esmModule = await import("./esm-module.mjs"); // Dynamic import + const esModule = await import("./esm-module.mjs"); // Dynamic import - esmModule.default(); + esModule.default(); }; main(); diff --git a/src/082-cjs-vs-esm/209-treat-ts-files-as-esm.problem/package.json b/src/082-cjs-vs-esm/209-treat-ts-files-as-esm.problem/package.json new file mode 100644 index 0000000..c2c21b9 --- /dev/null +++ b/src/082-cjs-vs-esm/209-treat-ts-files-as-esm.problem/package.json @@ -0,0 +1,12 @@ +{ + "name": "117-const-enums.explainer", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "dev": "nodemon --exec \"tsc && node dist/index.js\" ./src/index.ts" + }, + "keywords": [], + "author": "Matt Pocock", + "devDependencies": {} +} diff --git a/src/082-cjs-vs-esm/209-treat-ts-files-as-esm.problem/src/esm-module.ts b/src/082-cjs-vs-esm/209-treat-ts-files-as-esm.problem/src/esm-module.ts new file mode 100644 index 0000000..4f232f1 --- /dev/null +++ b/src/082-cjs-vs-esm/209-treat-ts-files-as-esm.problem/src/esm-module.ts @@ -0,0 +1,5 @@ +const hello = () => { + console.log("Hello!"); +}; + +export default hello; diff --git a/src/082-cjs-vs-esm/209-treat-ts-files-as-esm.problem/src/index.ts b/src/082-cjs-vs-esm/209-treat-ts-files-as-esm.problem/src/index.ts new file mode 100644 index 0000000..ca1721f --- /dev/null +++ b/src/082-cjs-vs-esm/209-treat-ts-files-as-esm.problem/src/index.ts @@ -0,0 +1,7 @@ +import esModule from "./esm-module"; + +const main = async () => { + esModule(); +}; + +main(); diff --git a/src/082-cjs-vs-esm/209-treat-ts-files-as-esm.problem/tsconfig.json b/src/082-cjs-vs-esm/209-treat-ts-files-as-esm.problem/tsconfig.json new file mode 100644 index 0000000..0401340 --- /dev/null +++ b/src/082-cjs-vs-esm/209-treat-ts-files-as-esm.problem/tsconfig.json @@ -0,0 +1,13 @@ +{ + "compilerOptions": { + "target": "ES2022", + "module": "NodeNext", + "moduleResolution": "NodeNext", + "outDir": "dist", + "esModuleInterop": true, + "strict": true, + "skipLibCheck": true, + "isolatedModules": true, + "verbatimModuleSyntax": true + }, +} \ No newline at end of file diff --git a/src/082-cjs-vs-esm/209-treat-ts-files-as-esm.solution/package.json b/src/082-cjs-vs-esm/209-treat-ts-files-as-esm.solution/package.json new file mode 100644 index 0000000..0ee89b6 --- /dev/null +++ b/src/082-cjs-vs-esm/209-treat-ts-files-as-esm.solution/package.json @@ -0,0 +1,13 @@ +{ + "name": "117-const-enums.explainer", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "dev": "nodemon --exec \"tsc && node dist/index.js\" ./src/index.ts" + }, + "keywords": [], + "author": "Matt Pocock", + "devDependencies": {}, + "type": "module" +} diff --git a/src/082-cjs-vs-esm/209-treat-ts-files-as-esm.solution/src/esm-module.ts b/src/082-cjs-vs-esm/209-treat-ts-files-as-esm.solution/src/esm-module.ts new file mode 100644 index 0000000..4f232f1 --- /dev/null +++ b/src/082-cjs-vs-esm/209-treat-ts-files-as-esm.solution/src/esm-module.ts @@ -0,0 +1,5 @@ +const hello = () => { + console.log("Hello!"); +}; + +export default hello; diff --git a/src/082-cjs-vs-esm/209-treat-ts-files-as-esm.solution/src/index.ts b/src/082-cjs-vs-esm/209-treat-ts-files-as-esm.solution/src/index.ts new file mode 100644 index 0000000..916d913 --- /dev/null +++ b/src/082-cjs-vs-esm/209-treat-ts-files-as-esm.solution/src/index.ts @@ -0,0 +1,7 @@ +import esModule from "./esm-module.js"; + +const main = async () => { + esModule(); +}; + +main(); diff --git a/src/082-cjs-vs-esm/209-treat-ts-files-as-esm.solution/tsconfig.json b/src/082-cjs-vs-esm/209-treat-ts-files-as-esm.solution/tsconfig.json new file mode 100644 index 0000000..0401340 --- /dev/null +++ b/src/082-cjs-vs-esm/209-treat-ts-files-as-esm.solution/tsconfig.json @@ -0,0 +1,13 @@ +{ + "compilerOptions": { + "target": "ES2022", + "module": "NodeNext", + "moduleResolution": "NodeNext", + "outDir": "dist", + "esModuleInterop": true, + "strict": true, + "skipLibCheck": true, + "isolatedModules": true, + "verbatimModuleSyntax": true + }, +} \ No newline at end of file diff --git a/src/085-the-utils-folder/209-intro-to-the-utils-folder.problem.ts b/src/085-the-utils-folder/210-intro-to-the-utils-folder.problem.ts similarity index 100% rename from src/085-the-utils-folder/209-intro-to-the-utils-folder.problem.ts rename to src/085-the-utils-folder/210-intro-to-the-utils-folder.problem.ts diff --git a/src/085-the-utils-folder/209-intro-to-the-utils-folder.solution.ts b/src/085-the-utils-folder/210-intro-to-the-utils-folder.solution.ts similarity index 100% rename from src/085-the-utils-folder/209-intro-to-the-utils-folder.solution.ts rename to src/085-the-utils-folder/210-intro-to-the-utils-folder.solution.ts diff --git a/src/085-the-utils-folder/210-generic-functions-without-inference.problem.ts b/src/085-the-utils-folder/211-generic-functions-without-inference.problem.ts similarity index 100% rename from src/085-the-utils-folder/210-generic-functions-without-inference.problem.ts rename to src/085-the-utils-folder/211-generic-functions-without-inference.problem.ts diff --git a/src/085-the-utils-folder/210-generic-functions-without-inference.solution.ts b/src/085-the-utils-folder/211-generic-functions-without-inference.solution.ts similarity index 100% rename from src/085-the-utils-folder/210-generic-functions-without-inference.solution.ts rename to src/085-the-utils-folder/211-generic-functions-without-inference.solution.ts diff --git a/src/085-the-utils-folder/211-type-parameter-defaults-in-generic-functions.problem.ts b/src/085-the-utils-folder/212-type-parameter-defaults-in-generic-functions.problem.ts similarity index 100% rename from src/085-the-utils-folder/211-type-parameter-defaults-in-generic-functions.problem.ts rename to src/085-the-utils-folder/212-type-parameter-defaults-in-generic-functions.problem.ts diff --git a/src/085-the-utils-folder/211-type-parameter-defaults-in-generic-functions.solution.ts b/src/085-the-utils-folder/212-type-parameter-defaults-in-generic-functions.solution.ts similarity index 100% rename from src/085-the-utils-folder/211-type-parameter-defaults-in-generic-functions.solution.ts rename to src/085-the-utils-folder/212-type-parameter-defaults-in-generic-functions.solution.ts diff --git a/src/085-the-utils-folder/212-type-parameter-constraints-with-generic-functions.problem.ts b/src/085-the-utils-folder/213-type-parameter-constraints-with-generic-functions.problem.ts similarity index 100% rename from src/085-the-utils-folder/212-type-parameter-constraints-with-generic-functions.problem.ts rename to src/085-the-utils-folder/213-type-parameter-constraints-with-generic-functions.problem.ts diff --git a/src/085-the-utils-folder/212-type-parameter-constraints-with-generic-functions.solution.ts b/src/085-the-utils-folder/213-type-parameter-constraints-with-generic-functions.solution.ts similarity index 100% rename from src/085-the-utils-folder/212-type-parameter-constraints-with-generic-functions.solution.ts rename to src/085-the-utils-folder/213-type-parameter-constraints-with-generic-functions.solution.ts diff --git a/src/085-the-utils-folder/213-generic-functions-with-inference.problem.ts b/src/085-the-utils-folder/214-generic-functions-with-inference.problem.ts similarity index 100% rename from src/085-the-utils-folder/213-generic-functions-with-inference.problem.ts rename to src/085-the-utils-folder/214-generic-functions-with-inference.problem.ts diff --git a/src/085-the-utils-folder/213-generic-functions-with-inference.solution.ts b/src/085-the-utils-folder/214-generic-functions-with-inference.solution.ts similarity index 100% rename from src/085-the-utils-folder/213-generic-functions-with-inference.solution.ts rename to src/085-the-utils-folder/214-generic-functions-with-inference.solution.ts diff --git a/src/085-the-utils-folder/214-as-any-inside-generic-functions.problem.ts b/src/085-the-utils-folder/215-as-any-inside-generic-functions.problem.ts similarity index 100% rename from src/085-the-utils-folder/214-as-any-inside-generic-functions.problem.ts rename to src/085-the-utils-folder/215-as-any-inside-generic-functions.problem.ts diff --git a/src/085-the-utils-folder/214-as-any-inside-generic-functions.solution.ts b/src/085-the-utils-folder/215-as-any-inside-generic-functions.solution.ts similarity index 100% rename from src/085-the-utils-folder/214-as-any-inside-generic-functions.solution.ts rename to src/085-the-utils-folder/215-as-any-inside-generic-functions.solution.ts diff --git a/src/085-the-utils-folder/215-multiple-type-arguments.problem.ts b/src/085-the-utils-folder/216-multiple-type-arguments.problem.ts similarity index 100% rename from src/085-the-utils-folder/215-multiple-type-arguments.problem.ts rename to src/085-the-utils-folder/216-multiple-type-arguments.problem.ts diff --git a/src/085-the-utils-folder/215-multiple-type-arguments.solution.ts b/src/085-the-utils-folder/216-multiple-type-arguments.solution.ts similarity index 100% rename from src/085-the-utils-folder/215-multiple-type-arguments.solution.ts rename to src/085-the-utils-folder/216-multiple-type-arguments.solution.ts diff --git a/src/085-the-utils-folder/216-create-group-by-function.problem.ts b/src/085-the-utils-folder/217-create-group-by-function.problem.ts similarity index 100% rename from src/085-the-utils-folder/216-create-group-by-function.problem.ts rename to src/085-the-utils-folder/217-create-group-by-function.problem.ts diff --git a/src/085-the-utils-folder/216-create-group-by-function.solution.ts b/src/085-the-utils-folder/217-create-group-by-function.solution.ts similarity index 100% rename from src/085-the-utils-folder/216-create-group-by-function.solution.ts rename to src/085-the-utils-folder/217-create-group-by-function.solution.ts diff --git a/src/085-the-utils-folder/217-type-predicates.problem.ts b/src/085-the-utils-folder/218-type-predicates.problem.ts similarity index 100% rename from src/085-the-utils-folder/217-type-predicates.problem.ts rename to src/085-the-utils-folder/218-type-predicates.problem.ts diff --git a/src/085-the-utils-folder/217-type-predicates.solution.ts b/src/085-the-utils-folder/218-type-predicates.solution.ts similarity index 100% rename from src/085-the-utils-folder/217-type-predicates.solution.ts rename to src/085-the-utils-folder/218-type-predicates.solution.ts diff --git a/src/085-the-utils-folder/218-assertion-functions.problem.ts b/src/085-the-utils-folder/219-assertion-functions.problem.ts similarity index 100% rename from src/085-the-utils-folder/218-assertion-functions.problem.ts rename to src/085-the-utils-folder/219-assertion-functions.problem.ts diff --git a/src/085-the-utils-folder/218-assertion-functions.solution.ts b/src/085-the-utils-folder/219-assertion-functions.solution.ts similarity index 100% rename from src/085-the-utils-folder/218-assertion-functions.solution.ts rename to src/085-the-utils-folder/219-assertion-functions.solution.ts diff --git a/src/085-the-utils-folder/219-function-overloads.problem.ts b/src/085-the-utils-folder/220-function-overloads.problem.ts similarity index 100% rename from src/085-the-utils-folder/219-function-overloads.problem.ts rename to src/085-the-utils-folder/220-function-overloads.problem.ts diff --git a/src/085-the-utils-folder/219-function-overloads.solution.ts b/src/085-the-utils-folder/220-function-overloads.solution.ts similarity index 100% rename from src/085-the-utils-folder/219-function-overloads.solution.ts rename to src/085-the-utils-folder/220-function-overloads.solution.ts diff --git a/src/090-the-style-guide/220-hungarian-notation.problem.ts b/src/090-the-style-guide/221-hungarian-notation.problem.ts similarity index 100% rename from src/090-the-style-guide/220-hungarian-notation.problem.ts rename to src/090-the-style-guide/221-hungarian-notation.problem.ts diff --git a/src/090-the-style-guide/220-hungarian-notation.solution.ts b/src/090-the-style-guide/221-hungarian-notation.solution.ts similarity index 100% rename from src/090-the-style-guide/220-hungarian-notation.solution.ts rename to src/090-the-style-guide/221-hungarian-notation.solution.ts diff --git a/src/090-the-style-guide/221-where-to-put-your-types.problem.ts b/src/090-the-style-guide/222-where-to-put-your-types.problem.ts similarity index 100% rename from src/090-the-style-guide/221-where-to-put-your-types.problem.ts rename to src/090-the-style-guide/222-where-to-put-your-types.problem.ts diff --git a/src/090-the-style-guide/221-where-to-put-your-types.solution.ts b/src/090-the-style-guide/222-where-to-put-your-types.solution.ts similarity index 100% rename from src/090-the-style-guide/221-where-to-put-your-types.solution.ts rename to src/090-the-style-guide/222-where-to-put-your-types.solution.ts diff --git a/src/090-the-style-guide/222-colocation-of-types.problem.ts b/src/090-the-style-guide/223-colocation-of-types.problem.ts similarity index 100% rename from src/090-the-style-guide/222-colocation-of-types.problem.ts rename to src/090-the-style-guide/223-colocation-of-types.problem.ts diff --git a/src/090-the-style-guide/222-colocation-of-types.solution.ts b/src/090-the-style-guide/223-colocation-of-types.solution.ts similarity index 100% rename from src/090-the-style-guide/222-colocation-of-types.solution.ts rename to src/090-the-style-guide/223-colocation-of-types.solution.ts diff --git a/src/090-the-style-guide/223-setting-up-eslint.explainer.ts b/src/090-the-style-guide/224-setting-up-eslint.explainer.ts similarity index 100% rename from src/090-the-style-guide/223-setting-up-eslint.explainer.ts rename to src/090-the-style-guide/224-setting-up-eslint.explainer.ts diff --git a/src/090-the-style-guide/224-explicit-any-rule-or-not.problem.ts b/src/090-the-style-guide/225-explicit-any-rule-or-not.problem.ts similarity index 100% rename from src/090-the-style-guide/224-explicit-any-rule-or-not.problem.ts rename to src/090-the-style-guide/225-explicit-any-rule-or-not.problem.ts diff --git a/src/090-the-style-guide/224-explicit-any-rule-or-not.solution.ts b/src/090-the-style-guide/225-explicit-any-rule-or-not.solution.ts similarity index 100% rename from src/090-the-style-guide/224-explicit-any-rule-or-not.solution.ts rename to src/090-the-style-guide/225-explicit-any-rule-or-not.solution.ts diff --git a/src/090-the-style-guide/225-explicit-return-types-or-not.problem.ts b/src/090-the-style-guide/226-explicit-return-types-or-not.problem.ts similarity index 100% rename from src/090-the-style-guide/225-explicit-return-types-or-not.problem.ts rename to src/090-the-style-guide/226-explicit-return-types-or-not.problem.ts diff --git a/src/090-the-style-guide/225-explicit-return-types-or-not.solution.ts b/src/090-the-style-guide/226-explicit-return-types-or-not.solution.ts similarity index 100% rename from src/090-the-style-guide/225-explicit-return-types-or-not.solution.ts rename to src/090-the-style-guide/226-explicit-return-types-or-not.solution.ts diff --git a/src/090-the-style-guide/226-any-vs-ts-ignore-vs-ts-expect-error.problem.ts b/src/090-the-style-guide/227-any-vs-ts-ignore-vs-ts-expect-error.problem.ts similarity index 100% rename from src/090-the-style-guide/226-any-vs-ts-ignore-vs-ts-expect-error.problem.ts rename to src/090-the-style-guide/227-any-vs-ts-ignore-vs-ts-expect-error.problem.ts diff --git a/src/090-the-style-guide/226-any-vs-ts-ignore-vs-ts-expect-error.solution.ts b/src/090-the-style-guide/227-any-vs-ts-ignore-vs-ts-expect-error.solution.ts similarity index 100% rename from src/090-the-style-guide/226-any-vs-ts-ignore-vs-ts-expect-error.solution.ts rename to src/090-the-style-guide/227-any-vs-ts-ignore-vs-ts-expect-error.solution.ts diff --git a/src/090-the-style-guide/227-dont-declare-type-and-value-with-the-same-name.problem.ts b/src/090-the-style-guide/228-dont-declare-type-and-value-with-the-same-name.problem.ts similarity index 100% rename from src/090-the-style-guide/227-dont-declare-type-and-value-with-the-same-name.problem.ts rename to src/090-the-style-guide/228-dont-declare-type-and-value-with-the-same-name.problem.ts diff --git a/src/090-the-style-guide/227-dont-declare-type-and-value-with-the-same-name.solution.ts b/src/090-the-style-guide/228-dont-declare-type-and-value-with-the-same-name.solution.ts similarity index 100% rename from src/090-the-style-guide/227-dont-declare-type-and-value-with-the-same-name.solution.ts rename to src/090-the-style-guide/228-dont-declare-type-and-value-with-the-same-name.solution.ts diff --git a/src/090-the-style-guide/228-types-vs-interfaces.problem.ts b/src/090-the-style-guide/229-types-vs-interfaces.problem.ts similarity index 100% rename from src/090-the-style-guide/228-types-vs-interfaces.problem.ts rename to src/090-the-style-guide/229-types-vs-interfaces.problem.ts diff --git a/src/090-the-style-guide/228-types-vs-interfaces.solution.ts b/src/090-the-style-guide/229-types-vs-interfaces.solution.ts similarity index 100% rename from src/090-the-style-guide/228-types-vs-interfaces.solution.ts rename to src/090-the-style-guide/229-types-vs-interfaces.solution.ts diff --git a/src/090-the-style-guide/229-dont-use-uppercase-function-object-string-boolean-as-types.problem.ts b/src/090-the-style-guide/230-dont-use-uppercase-function-object-string-boolean-as-types.problem.ts similarity index 100% rename from src/090-the-style-guide/229-dont-use-uppercase-function-object-string-boolean-as-types.problem.ts rename to src/090-the-style-guide/230-dont-use-uppercase-function-object-string-boolean-as-types.problem.ts diff --git a/src/090-the-style-guide/229-dont-use-uppercase-function-object-string-boolean-as-types.solution.ts b/src/090-the-style-guide/230-dont-use-uppercase-function-object-string-boolean-as-types.solution.ts similarity index 100% rename from src/090-the-style-guide/229-dont-use-uppercase-function-object-string-boolean-as-types.solution.ts rename to src/090-the-style-guide/230-dont-use-uppercase-function-object-string-boolean-as-types.solution.ts diff --git a/src/090-the-style-guide/230-dont-use-globally-available-types.problem.ts b/src/090-the-style-guide/231-dont-use-globally-available-types.problem.ts similarity index 100% rename from src/090-the-style-guide/230-dont-use-globally-available-types.problem.ts rename to src/090-the-style-guide/231-dont-use-globally-available-types.problem.ts diff --git a/src/090-the-style-guide/230-dont-use-globally-available-types.solution.ts b/src/090-the-style-guide/231-dont-use-globally-available-types.solution.ts similarity index 100% rename from src/090-the-style-guide/230-dont-use-globally-available-types.solution.ts rename to src/090-the-style-guide/231-dont-use-globally-available-types.solution.ts diff --git a/src/090-the-style-guide/231-how-strict-should-you-configure-ts.problem.ts b/src/090-the-style-guide/232-how-strict-should-you-configure-ts.problem.ts similarity index 100% rename from src/090-the-style-guide/231-how-strict-should-you-configure-ts.problem.ts rename to src/090-the-style-guide/232-how-strict-should-you-configure-ts.problem.ts diff --git a/src/090-the-style-guide/231-how-strict-should-you-configure-ts.solution.ts b/src/090-the-style-guide/232-how-strict-should-you-configure-ts.solution.ts similarity index 100% rename from src/090-the-style-guide/231-how-strict-should-you-configure-ts.solution.ts rename to src/090-the-style-guide/232-how-strict-should-you-configure-ts.solution.ts diff --git a/src/090-the-style-guide/232-dont-unnecessarily-widen-types.problem.ts b/src/090-the-style-guide/233-dont-unnecessarily-widen-types.problem.ts similarity index 100% rename from src/090-the-style-guide/232-dont-unnecessarily-widen-types.problem.ts rename to src/090-the-style-guide/233-dont-unnecessarily-widen-types.problem.ts diff --git a/src/090-the-style-guide/232-dont-unnecessarily-widen-types.solution.ts b/src/090-the-style-guide/233-dont-unnecessarily-widen-types.solution.ts similarity index 100% rename from src/090-the-style-guide/232-dont-unnecessarily-widen-types.solution.ts rename to src/090-the-style-guide/233-dont-unnecessarily-widen-types.solution.ts diff --git a/src/095-migrating-from-javascript/233-strict-file-by-file-vs-ramp-up-strictness.problem.ts b/src/095-migrating-from-javascript/234-strict-file-by-file-vs-ramp-up-strictness.problem.ts similarity index 100% rename from src/095-migrating-from-javascript/233-strict-file-by-file-vs-ramp-up-strictness.problem.ts rename to src/095-migrating-from-javascript/234-strict-file-by-file-vs-ramp-up-strictness.problem.ts diff --git a/src/095-migrating-from-javascript/233-strict-file-by-file-vs-ramp-up-strictness.solution.ts b/src/095-migrating-from-javascript/234-strict-file-by-file-vs-ramp-up-strictness.solution.ts similarity index 100% rename from src/095-migrating-from-javascript/233-strict-file-by-file-vs-ramp-up-strictness.solution.ts rename to src/095-migrating-from-javascript/234-strict-file-by-file-vs-ramp-up-strictness.solution.ts diff --git a/src/095-migrating-from-javascript/234-dependencies-first.problem.ts b/src/095-migrating-from-javascript/235-dependencies-first.problem.ts similarity index 100% rename from src/095-migrating-from-javascript/234-dependencies-first.problem.ts rename to src/095-migrating-from-javascript/235-dependencies-first.problem.ts diff --git a/src/095-migrating-from-javascript/234-dependencies-first.solution.ts b/src/095-migrating-from-javascript/235-dependencies-first.solution.ts similarity index 100% rename from src/095-migrating-from-javascript/234-dependencies-first.solution.ts rename to src/095-migrating-from-javascript/235-dependencies-first.solution.ts diff --git a/src/095-migrating-from-javascript/235-typing-third-party-modules.problem.ts b/src/095-migrating-from-javascript/236-typing-third-party-modules.problem.ts similarity index 100% rename from src/095-migrating-from-javascript/235-typing-third-party-modules.problem.ts rename to src/095-migrating-from-javascript/236-typing-third-party-modules.problem.ts diff --git a/src/095-migrating-from-javascript/235-typing-third-party-modules.solution.ts b/src/095-migrating-from-javascript/236-typing-third-party-modules.solution.ts similarity index 100% rename from src/095-migrating-from-javascript/235-typing-third-party-modules.solution.ts rename to src/095-migrating-from-javascript/236-typing-third-party-modules.solution.ts diff --git a/src/095-migrating-from-javascript/236-madge.problem.ts b/src/095-migrating-from-javascript/237-madge.problem.ts similarity index 100% rename from src/095-migrating-from-javascript/236-madge.problem.ts rename to src/095-migrating-from-javascript/237-madge.problem.ts diff --git a/src/095-migrating-from-javascript/236-madge.solution.ts b/src/095-migrating-from-javascript/237-madge.solution.ts similarity index 100% rename from src/095-migrating-from-javascript/236-madge.solution.ts rename to src/095-migrating-from-javascript/237-madge.solution.ts diff --git a/src/095-migrating-from-javascript/237-understanding-the-structure-of-ts-errors.problem.ts b/src/095-migrating-from-javascript/238-understanding-the-structure-of-ts-errors.problem.ts similarity index 100% rename from src/095-migrating-from-javascript/237-understanding-the-structure-of-ts-errors.problem.ts rename to src/095-migrating-from-javascript/238-understanding-the-structure-of-ts-errors.problem.ts diff --git a/src/095-migrating-from-javascript/237-understanding-the-structure-of-ts-errors.solution.ts b/src/095-migrating-from-javascript/238-understanding-the-structure-of-ts-errors.solution.ts similarity index 100% rename from src/095-migrating-from-javascript/237-understanding-the-structure-of-ts-errors.solution.ts rename to src/095-migrating-from-javascript/238-understanding-the-structure-of-ts-errors.solution.ts diff --git a/src/095-migrating-from-javascript/238-experiments-with-jsdoc.problem.ts b/src/095-migrating-from-javascript/239-experiments-with-jsdoc.problem.ts similarity index 100% rename from src/095-migrating-from-javascript/238-experiments-with-jsdoc.problem.ts rename to src/095-migrating-from-javascript/239-experiments-with-jsdoc.problem.ts diff --git a/src/095-migrating-from-javascript/238-experiments-with-jsdoc.solution.ts b/src/095-migrating-from-javascript/239-experiments-with-jsdoc.solution.ts similarity index 100% rename from src/095-migrating-from-javascript/238-experiments-with-jsdoc.solution.ts rename to src/095-migrating-from-javascript/239-experiments-with-jsdoc.solution.ts diff --git a/src/095-migrating-from-javascript/239-jsdoc-cannot-pass-types-to-functions.problem.ts b/src/095-migrating-from-javascript/240-jsdoc-cannot-pass-types-to-functions.problem.ts similarity index 100% rename from src/095-migrating-from-javascript/239-jsdoc-cannot-pass-types-to-functions.problem.ts rename to src/095-migrating-from-javascript/240-jsdoc-cannot-pass-types-to-functions.problem.ts diff --git a/src/095-migrating-from-javascript/239-jsdoc-cannot-pass-types-to-functions.solution.ts b/src/095-migrating-from-javascript/240-jsdoc-cannot-pass-types-to-functions.solution.ts similarity index 100% rename from src/095-migrating-from-javascript/239-jsdoc-cannot-pass-types-to-functions.solution.ts rename to src/095-migrating-from-javascript/240-jsdoc-cannot-pass-types-to-functions.solution.ts