gitextract_p7mixzv5/ ├── .gitignore ├── LICENCE.md ├── README.md ├── advanced-typescript/ │ └── 150 native node support/ │ ├── .vscode/ │ │ ├── extensions.json │ │ └── settings.json │ ├── package.json │ ├── src/ │ │ └── index.ts │ └── tsconfig.json ├── demo/ │ ├── .vscode/ │ │ ├── extensions.json │ │ └── settings.json │ ├── package.json │ ├── src/ │ │ ├── app.ts │ │ ├── example.js │ │ ├── feature.ts │ │ └── index.ts │ └── tsconfig.json └── typescript/ ├── 01 intro/ │ ├── package.json │ ├── src/ │ │ └── index.ts │ └── tsconfig.json ├── 02 instance/ │ ├── package.json │ ├── src/ │ │ └── index.ts │ └── tsconfig.json ├── 03 primitive/ │ ├── package.json │ ├── src/ │ │ └── index.ts │ └── tsconfig.json ├── 04 arrays/ │ ├── package.json │ ├── src/ │ │ └── index.ts │ └── tsconfig.json ├── 05 objects/ │ ├── package.json │ ├── src/ │ │ └── index.ts │ └── tsconfig.json ├── 06 functions/ │ ├── package.json │ ├── src/ │ │ └── index.ts │ └── tsconfig.json ├── 07 structural/ │ ├── package.json │ ├── src/ │ │ └── index.ts │ └── tsconfig.json ├── 08 classes/ │ ├── package.json │ ├── src/ │ │ └── index.ts │ └── tsconfig.json ├── 09 target/ │ ├── package.json │ ├── src/ │ │ └── index.ts │ └── tsconfig.json ├── 10 generics/ │ ├── .vscode/ │ │ └── settings.json │ ├── package.json │ ├── src/ │ │ └── index.ts │ └── tsconfig.json ├── 11 any and unknown/ │ ├── .vscode/ │ │ └── settings.json │ ├── package.json │ ├── src/ │ │ ├── examples.ts │ │ └── index.ts │ └── tsconfig.json ├── 12 migration/ │ ├── .vscode/ │ │ └── settings.json │ ├── package.json │ ├── src/ │ │ ├── examples.ts │ │ └── index.ts │ └── tsconfig.json ├── 13 universal utilities/ │ ├── .vscode/ │ │ └── settings.json │ ├── package.json │ ├── src/ │ │ ├── examples.ts │ │ └── index.ts │ └── tsconfig.json ├── 14 frontend/ │ └── README.md ├── 15 assertion/ │ ├── .vscode/ │ │ └── settings.json │ ├── package.json │ ├── src/ │ │ ├── example.ts │ │ ├── index.ts │ │ └── index.tsx │ └── tsconfig.json ├── 16 casting/ │ ├── .vscode/ │ │ └── settings.json │ ├── package.json │ ├── src/ │ │ ├── example.ts │ │ ├── index.ts │ │ └── index.tsx │ └── tsconfig.json ├── 17 modules/ │ ├── .vscode/ │ │ └── settings.json │ ├── package.json │ ├── src/ │ │ ├── index.ts │ │ └── utils.ts │ └── tsconfig.json ├── 18 declarations/ │ ├── .vscode/ │ │ └── settings.json │ ├── package.json │ ├── src/ │ │ └── index.ts │ └── tsconfig.json ├── 20 async await/ │ ├── .vscode/ │ │ └── settings.json │ ├── package.json │ ├── src/ │ │ ├── better.ts │ │ └── index.ts │ └── tsconfig.json ├── 21 ts-node/ │ ├── .vscode/ │ │ └── settings.json │ ├── package.json │ ├── src/ │ │ └── index.ts │ └── tsconfig.json ├── 22 const/ │ ├── .vscode/ │ │ └── settings.json │ ├── package.json │ ├── src/ │ │ └── index.ts │ └── tsconfig.json ├── 23 this/ │ ├── .vscode/ │ │ └── settings.json │ ├── package.json │ ├── src/ │ │ └── index.ts │ └── tsconfig.json ├── 24 readonly/ │ ├── .vscode/ │ │ └── settings.json │ ├── package.json │ ├── src/ │ │ └── index.ts │ └── tsconfig.json ├── 25 union/ │ ├── .vscode/ │ │ └── settings.json │ ├── package.json │ ├── src/ │ │ └── index.ts │ └── tsconfig.json ├── 26 literal/ │ ├── .vscode/ │ │ └── settings.json │ ├── package.json │ ├── src/ │ │ └── index.ts │ └── tsconfig.json ├── 27 narrowing/ │ ├── .vscode/ │ │ └── settings.json │ ├── package.json │ ├── src/ │ │ └── index.ts │ └── tsconfig.json ├── 28 discriminating/ │ ├── .vscode/ │ │ └── settings.json │ ├── package.json │ ├── src/ │ │ └── index.ts │ └── tsconfig.json ├── 29 parameter properties/ │ ├── .vscode/ │ │ └── settings.json │ ├── package.json │ ├── src/ │ │ └── index.ts │ └── tsconfig.json ├── 30 strict/ │ ├── .vscode/ │ │ └── settings.json │ ├── false/ │ │ ├── false.ts │ │ └── tsconfig.json │ ├── package.json │ ├── src/ │ │ └── index.ts │ └── true/ │ ├── true.ts │ └── tsconfig.json ├── 31 null undefined/ │ ├── .vscode/ │ │ └── settings.json │ ├── package.json │ ├── src/ │ │ ├── example.ts │ │ └── index.ts │ └── tsconfig.json ├── 32 intersection/ │ ├── .vscode/ │ │ └── settings.json │ ├── package.json │ ├── src/ │ │ ├── example.ts │ │ └── index.ts │ └── tsconfig.json ├── 33 optional/ │ ├── .vscode/ │ │ ├── extensions.json │ │ └── settings.json │ ├── package.json │ ├── src/ │ │ ├── example.ts │ │ └── index.ts │ └── tsconfig.json ├── 34 non-null/ │ ├── .vscode/ │ │ ├── extensions.json │ │ └── settings.json │ ├── package.json │ ├── src/ │ │ ├── example.ts │ │ └── index.ts │ └── tsconfig.json ├── 35 interface/ │ ├── .vscode/ │ │ ├── extensions.json │ │ └── settings.json │ ├── package.json │ ├── src/ │ │ ├── interface.ts │ │ └── type.ts │ └── tsconfig.json ├── 36 declaration merging/ │ ├── .vscode/ │ │ ├── extensions.json │ │ └── settings.json │ ├── package.json │ ├── src/ │ │ └── index.ts │ └── tsconfig.json ├── 37 types vs interfaces/ │ ├── .vscode/ │ │ ├── extensions.json │ │ └── settings.json │ ├── package.json │ ├── src/ │ │ ├── interfaces.ts │ │ └── types.ts │ └── tsconfig.json ├── 38 never/ │ ├── .vscode/ │ │ ├── extensions.json │ │ └── settings.json │ ├── package.json │ ├── src/ │ │ └── index.ts │ └── tsconfig.json ├── 39 implements/ │ ├── .vscode/ │ │ ├── extensions.json │ │ └── settings.json │ ├── package.json │ ├── src/ │ │ └── index.ts │ └── tsconfig.json ├── 40 definite/ │ ├── .vscode/ │ │ ├── extensions.json │ │ └── settings.json │ ├── package.json │ ├── src/ │ │ └── index.ts │ └── tsconfig.json ├── 41 type guard/ │ ├── .vscode/ │ │ ├── extensions.json │ │ └── settings.json │ ├── package.json │ ├── src/ │ │ └── index.ts │ └── tsconfig.json ├── 42 assert/ │ ├── .vscode/ │ │ ├── extensions.json │ │ └── settings.json │ ├── package.json │ ├── src/ │ │ ├── example.ts │ │ └── index.ts │ └── tsconfig.json ├── 43 overloads/ │ ├── .vscode/ │ │ ├── extensions.json │ │ └── settings.json │ ├── package.json │ ├── src/ │ │ ├── example.ts │ │ └── index.ts │ └── tsconfig.json ├── 44 call signature/ │ ├── .vscode/ │ │ ├── extensions.json │ │ └── settings.json │ ├── package.json │ ├── src/ │ │ ├── example.ts │ │ └── index.ts │ └── tsconfig.json ├── 45 abstract/ │ ├── .vscode/ │ │ ├── extensions.json │ │ └── settings.json │ ├── package.json │ ├── src/ │ │ ├── example.ts │ │ └── index.ts │ └── tsconfig.json ├── 46 index/ │ ├── .vscode/ │ │ ├── extensions.json │ │ └── settings.json │ ├── package.json │ ├── src/ │ │ ├── example.ts │ │ └── index.ts │ └── tsconfig.json ├── 47 readonly array/ │ ├── .vscode/ │ │ ├── extensions.json │ │ └── settings.json │ ├── package.json │ ├── src/ │ │ ├── example.ts │ │ └── index.ts │ └── tsconfig.json ├── 48 double assertion/ │ ├── .vscode/ │ │ ├── extensions.json │ │ └── settings.json │ ├── package.json │ ├── src/ │ │ ├── example.ts │ │ └── index.ts │ └── tsconfig.json ├── 49 this/ │ ├── .vscode/ │ │ ├── extensions.json │ │ └── settings.json │ ├── package.json │ ├── src/ │ │ ├── example.ts │ │ └── index.ts │ └── tsconfig.json ├── 50 generic constraint/ │ ├── .vscode/ │ │ ├── extensions.json │ │ └── settings.json │ ├── package.json │ ├── src/ │ │ └── index.ts │ └── tsconfig.json ├── 51 typeof/ │ ├── .vscode/ │ │ ├── extensions.json │ │ └── settings.json │ ├── package.json │ ├── src/ │ │ ├── example.json │ │ └── index.ts │ └── tsconfig.json ├── 52 lookup/ │ ├── .vscode/ │ │ ├── extensions.json │ │ └── settings.json │ ├── package.json │ ├── src/ │ │ ├── example.json │ │ └── index.ts │ └── tsconfig.json ├── 53 keyof/ │ ├── .vscode/ │ │ ├── extensions.json │ │ └── settings.json │ ├── package.json │ ├── src/ │ │ ├── example.json │ │ └── index.ts │ └── tsconfig.json ├── 54 conditional/ │ ├── .vscode/ │ │ ├── extensions.json │ │ └── settings.json │ ├── package.json │ ├── src/ │ │ ├── example.json │ │ └── index.ts │ └── tsconfig.json ├── 55 infer/ │ ├── .vscode/ │ │ ├── extensions.json │ │ └── settings.json │ ├── package.json │ ├── src/ │ │ ├── example.json │ │ └── index.ts │ └── tsconfig.json ├── 56 mapped/ │ ├── .vscode/ │ │ ├── extensions.json │ │ └── settings.json │ ├── package.json │ ├── src/ │ │ ├── example.json │ │ └── index.ts │ └── tsconfig.json ├── 57 mapped type modifiers/ │ ├── .vscode/ │ │ ├── extensions.json │ │ └── settings.json │ ├── package.json │ ├── src/ │ │ ├── example.json │ │ └── index.ts │ └── tsconfig.json ├── 58 as const/ │ ├── .vscode/ │ │ ├── extensions.json │ │ └── settings.json │ ├── package.json │ ├── src/ │ │ ├── example.json │ │ └── index.ts │ └── tsconfig.json ├── 59 override/ │ ├── .vscode/ │ │ ├── extensions.json │ │ └── settings.json │ ├── package.json │ ├── src/ │ │ ├── another.ts │ │ └── index.ts │ └── tsconfig.json ├── 60 pick/ │ ├── .vscode/ │ │ ├── extensions.json │ │ └── settings.json │ ├── package.json │ ├── src/ │ │ └── index.ts │ └── tsconfig.json ├── 61 object/ │ ├── .vscode/ │ │ ├── extensions.json │ │ └── settings.json │ ├── package.json │ ├── src/ │ │ └── index.ts │ └── tsconfig.json ├── 62 noUncheckedIndexAccess/ │ ├── .vscode/ │ │ ├── extensions.json │ │ └── settings.json │ ├── package.json │ ├── src/ │ │ └── index.ts │ └── tsconfig.json ├── 63 satisfies/ │ ├── .vscode/ │ │ ├── extensions.json │ │ └── settings.json │ ├── package.json │ ├── src/ │ │ └── index.ts │ └── tsconfig.json ├── 64 PropertyKey/ │ ├── .vscode/ │ │ ├── extensions.json │ │ └── settings.json │ ├── package.json │ ├── src/ │ │ └── index.ts │ └── tsconfig.json ├── 65 thisType/ │ ├── .vscode/ │ │ ├── extensions.json │ │ └── settings.json │ ├── package.json │ ├── src/ │ │ └── index.ts │ └── tsconfig.json ├── 66 Awaited/ │ ├── .vscode/ │ │ ├── extensions.json │ │ └── settings.json │ ├── package.json │ ├── src/ │ │ └── index.ts │ └── tsconfig.json ├── 67 intrinsic string/ │ ├── .vscode/ │ │ ├── extensions.json │ │ └── settings.json │ ├── package.json │ ├── src/ │ │ └── index.ts │ └── tsconfig.json ├── 68 mapped type as clause/ │ ├── .vscode/ │ │ ├── extensions.json │ │ └── settings.json │ ├── package.json │ ├── src/ │ │ └── index.ts │ └── tsconfig.json ├── 69 union vs intersection venn diagrams/ │ ├── .vscode/ │ │ ├── extensions.json │ │ └── settings.json │ ├── package.json │ ├── src/ │ │ └── index.ts │ └── tsconfig.json └── 70 enums are bad/ ├── .vscode/ │ ├── extensions.json │ └── settings.json ├── package.json ├── src/ │ ├── app.ts │ ├── index.ts │ └── initiateLogin.ts └── tsconfig.json