{"id":16862978,"url":"https://github.com/jeffsieu/typescript-from-zero","last_synced_at":"2025-04-11T05:22:16.834Z","repository":{"id":255911046,"uuid":"841847454","full_name":"jeffsieu/typescript-from-zero","owner":"jeffsieu","description":"A step-by-step TypeScript handbook with practical examples and hands-on exercises.","archived":false,"fork":false,"pushed_at":"2024-09-10T17:23:27.000Z","size":114,"stargazers_count":3,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-25T03:25:36.035Z","etag":null,"topics":["tutorial","typescript","typescript-basic","typescript-book","typescript-tutorial","typescript-tutorials"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jeffsieu.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-08-13T06:54:31.000Z","updated_at":"2024-12-18T15:37:52.000Z","dependencies_parsed_at":"2024-09-10T18:56:26.091Z","dependency_job_id":null,"html_url":"https://github.com/jeffsieu/typescript-from-zero","commit_stats":null,"previous_names":["jeffsieu/typescript-from-zero"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jeffsieu%2Ftypescript-from-zero","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jeffsieu%2Ftypescript-from-zero/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jeffsieu%2Ftypescript-from-zero/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jeffsieu%2Ftypescript-from-zero/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jeffsieu","download_url":"https://codeload.github.com/jeffsieu/typescript-from-zero/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248346358,"owners_count":21088445,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["tutorial","typescript","typescript-basic","typescript-book","typescript-tutorial","typescript-tutorials"],"created_at":"2024-10-13T14:37:22.194Z","updated_at":"2025-04-11T05:22:16.809Z","avatar_url":"https://github.com/jeffsieu.png","language":"TypeScript","readme":"# TypeScript from Zero\n\nThis repository serves as an interactive guide to TypeScript.\nIt contains written guides in the form of README.md files, as well as code examples in the form of `.ts` files.\n\n## Prerequisites\n\nThis course assumes that you have:\n\n- Proficiency with JavaScript (or minimally any other language)\n\nGood to have:\n\n- Some experience with TypeScript\n- VS Code installed\n\n## Setup\n\n```sh\nnpm install # Install ESLint and TypeScript for type-checking in hands-on exercises.\n```\n\nWe will be using [Visual Studio Code](https://code.visualstudio.com/) with the following extensions:\n\n- [Twoslash Query Comments](https://marketplace.visualstudio.com/items?itemName=Orta.vscode-twoslash-queries) - To show inline type previews\n- [ESLint](https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint) - To show linting errors\n- [Markdown Preview Enhanced](https://marketplace.visualstudio.com/items?itemName=shd101wyy.markdown-preview-enhanced) - To preview markdown files\n\n\n## Table of Contents\n\n- Basics\n  1. [Introduction to TypeScript](./chapters/1-basics/0-introduction-to-typescript/README.md)\n  1. [Type annotations](./chapters/1-basics/1-type-annotations/README.md)\n  1. [Inferred types](./chapters/1-basics/2-inferred-types/README.md)\n  1. [Overriding inferred types](./chapters/1-basics/3-overriding-inferred-types/README.md)\n  1. [Type aliases](./chapters/1-basics/4-type-aliases/README.md)\n  1. [Object types and interfaces](./chapters/1-basics/5-object-types-and-interfaces/README.md)\n  1. [Optional properties and types](./chapters/1-basics/6-optional-properties-and-types/README.md)\n  1. [Union and literal types](./chapters/1-basics/7-union-and-literal-types/README.md)\n  1. [Type assertions](./chapters/1-basics/8-type-assertions/README.md)\n  1. [Type guards](./chapters/1-basics/9-type-guards/README.md)\n  1. [Arrays, records and tuples](./chapters/1-basics/10-arrays-records-tuples/README.md)\n  1. [Classes](./chapters/1-basics/11-classes/README.md)\n  1. [Readonly types as const](./chapters/1-basics/12-readonly-types-as-const/README.md)\n\n- Intermediate\n  1. [Unknown vs any](./chapters/2-intermediate-concepts/1-unknown-any/README.md)\n  1. [Intersection types](./chapters/2-intermediate-concepts/2-intersection-types/README.md)\n  1. [Exclude types using Omit and Exclude](./chapters/2-intermediate-concepts/3-exclude-types-omit-exclude/README.md)\n  1. [Null, undefined, void and never](./chapters/2-intermediate-concepts/4-null-undefined-void-never/README.md)\n  1. [Variable types and typeof](./chapters/2-intermediate-concepts/5-variable-types-typeof/README.md)\n  1. [Variable keys and keyof](./chapters/2-intermediate-concepts/6-variable-keys-keyof/README.md)\n  1. [Satisfies keyword](./chapters/2-intermediate-concepts/7-satisfies/README.md)\n  1. [As vs type annotations vs satisfies](./chapters/2-intermediate-concepts/8-as-vs-type-annotations-vs-satisfies/README.md)\n  1. [Discriminated unions](./chapters/2-intermediate-concepts/9-discriminated-unions/README.md)\n\n- Advanced concepts\n  1. [Index types](./chapters/3-advanced-concepts/1-index-types/README.md)\n  1. [Function overloading](./chapters/3-advanced-concepts/2-function-overloading/README.md)\n  1. [Generic types](./chapters/3-advanced-concepts/3-generic-types/README.md)\n  1. [Conditional types](./chapters/3-advanced-concepts/4-conditional-types/README.md)\n  1. [Distributive conditional types](./chapters/3-advanced-concepts/5-distributive-conditional-types/README.md)\n  1. [Template literal types](./chapters/3-advanced-concepts/6-template-literal-types/README.md)\n  1. [Mapped types](./chapters/3-advanced-concepts/7-mapped-types/README.md)\n  1. [Infer in conditional types](./chapters/3-advanced-concepts/8-infer-in-conditional-types/README.md)\n  1. [Declaration merging](./chapters/3-advanced-concepts/9-declaration-merging/README.md)\n\n## Expectations\n\n### What this course is\n\n- A guide to TypeScript syntax and best practices when using TypeScript in your codebase\n\n### What this course is not\n\n- A guide to setting up TypeScript in your project\n- A JavaScript tutorial\n\n## Credits\n\nThis set of course materials was prepared by [Jeff Sieu](https://jeffsieu.com). \n\nSome of the examples and explanations were inspired by the [official TypeScript documentation](https://www.typescriptlang.org/docs/).\n\n## Useful resources\n\n- [TypeScript for JavaScript programmers](https://www.typescriptlang.org/docs/handbook/typescript-in-5-minutes.html)\n- [TypeScript playground](https://www.typescriptlang.org/play)\n- [Type Challenges (Interactive website)](https://type-challenges.github.io/)\n- [Type Challenges (Github)](https://github.com/type-challenges/type-challenges)\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjeffsieu%2Ftypescript-from-zero","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjeffsieu%2Ftypescript-from-zero","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjeffsieu%2Ftypescript-from-zero/lists"}