gitextract_xft80fat/ ├── .github/ │ └── workflows/ │ ├── compile.sh │ ├── lint.sh │ └── validate-content.yml ├── .gitignore ├── .vscode/ │ └── settings.json ├── FUNDING.yml ├── LICENSE.MD ├── README-it_IT.md ├── README-pt_BR.md ├── README-sv_SE.md ├── README-zh_CN.md ├── README.md ├── downloads/ │ ├── typescript-book-it_IT.epub │ ├── typescript-book-pt_BR.epub │ ├── typescript-book-sv_SE.epub │ ├── typescript-book-zh_CN.epub │ └── typescript-book.epub ├── tools/ │ ├── .markdownlint.json │ ├── .nvmrc │ ├── .prettierrc │ ├── .vscode/ │ │ ├── launch.json │ │ └── settings.json │ ├── Makefile │ ├── README.md │ ├── check_toc.py │ ├── compile.ts │ ├── config.ts │ ├── format.ts │ ├── i18n.ts │ ├── lint.ts │ ├── make-books.sh │ ├── make-website-content.py │ ├── package.json │ ├── remove_skip_empty_lines.sh │ ├── test-md/ │ │ ├── README-zh_CN.md │ │ └── README.md │ ├── tsconfig.json │ ├── utilities-add-translation/ │ │ ├── README.md │ │ ├── concatenate_language_files.py │ │ ├── create_language_files.py │ │ ├── split_markdown.py │ │ ├── verify_concatenation.py │ │ └── verify_concatenation_detailed.py │ ├── utils.ts │ └── verify_codeblocks.py └── website/ ├── .gitignore ├── .nvmrc ├── .prettierrc ├── .vscode/ │ ├── extensions.json │ └── launch.json ├── README.md ├── astro.config.mjs ├── package.json ├── public/ │ ├── cookie-banner/ │ │ ├── silktide-consent-manager.css │ │ └── silktide-consent-manager.js │ ├── cookie_policy.html │ └── google184c8848cff38265.html ├── src/ │ ├── components/ │ │ ├── Hero.astro │ │ └── RightSidebarBanner.astro │ ├── content/ │ │ ├── config.ts │ │ ├── docs/ │ │ │ ├── book/ │ │ │ │ ├── about-the-author.md │ │ │ │ ├── any-type.md │ │ │ │ ├── assignments.md │ │ │ │ ├── built-in-type-primitives.md │ │ │ │ ├── class.md │ │ │ │ ├── common-built-in-js-objects.md │ │ │ │ ├── conditional-types.md │ │ │ │ ├── control-flow-analysis.md │ │ │ │ ├── differences-between-type-and-interface.md │ │ │ │ ├── discriminated-unions.md │ │ │ │ ├── distributive-conditional-types.md │ │ │ │ ├── downloads-and-website.md │ │ │ │ ├── enums.md │ │ │ │ ├── erased-structural-types.md │ │ │ │ ├── exhaustiveness-checking.md │ │ │ │ ├── exploring-the-type-system.md │ │ │ │ ├── extending-types.md │ │ │ │ ├── fixed-length-tuple.md │ │ │ │ ├── generics.md │ │ │ │ ├── getting-started-with-typescript.md │ │ │ │ ├── index-signatures.md │ │ │ │ ├── infer-type-inference-in-conditional-types.md │ │ │ │ ├── interface-and-type.md │ │ │ │ ├── intersection-types.md │ │ │ │ ├── introduction.md │ │ │ │ ├── literal-inference.md │ │ │ │ ├── literal-types.md │ │ │ │ ├── mapped-type-modifiers.md │ │ │ │ ├── mapped-types.md │ │ │ │ ├── merging-and-extension.md │ │ │ │ ├── named-tuple-type-labeled.md │ │ │ │ ├── namespacing.md │ │ │ │ ├── narrowing.md │ │ │ │ ├── never-type.md │ │ │ │ ├── object-types.md │ │ │ │ ├── optional-properties.md │ │ │ │ ├── others.md │ │ │ │ ├── overloads.md │ │ │ │ ├── predefined-conditional-types.md │ │ │ │ ├── primitive-types.md │ │ │ │ ├── readonly-properties.md │ │ │ │ ├── strictnullchecks.md │ │ │ │ ├── symbols.md │ │ │ │ ├── table-of-contents.md │ │ │ │ ├── template-union-types.md │ │ │ │ ├── the-concise-typescript-book.md │ │ │ │ ├── the-never-type.md │ │ │ │ ├── translations.md │ │ │ │ ├── triple-slash-directives.md │ │ │ │ ├── tuple-type-anonymous.md │ │ │ │ ├── type-annotations.md │ │ │ │ ├── type-from-func-return.md │ │ │ │ ├── type-from-module.md │ │ │ │ ├── type-from-value.md │ │ │ │ ├── type-indexing.md │ │ │ │ ├── type-manipulation.md │ │ │ │ ├── type-predicates.md │ │ │ │ ├── typescript-introduction.md │ │ │ │ ├── union-type.md │ │ │ │ ├── unknown-type.md │ │ │ │ └── void-type.md │ │ │ ├── index.mdx │ │ │ ├── it-it/ │ │ │ │ ├── book/ │ │ │ │ │ ├── about-the-author.md │ │ │ │ │ ├── any-type.md │ │ │ │ │ ├── assignments.md │ │ │ │ │ ├── built-in-type-primitives.md │ │ │ │ │ ├── class.md │ │ │ │ │ ├── common-built-in-js-objects.md │ │ │ │ │ ├── conditional-types.md │ │ │ │ │ ├── control-flow-analysis.md │ │ │ │ │ ├── differences-between-type-and-interface.md │ │ │ │ │ ├── discriminated-unions.md │ │ │ │ │ ├── distributive-conditional-types.md │ │ │ │ │ ├── downloads-and-website.md │ │ │ │ │ ├── enums.md │ │ │ │ │ ├── erased-structural-types.md │ │ │ │ │ ├── exhaustiveness-checking.md │ │ │ │ │ ├── exploring-the-type-system.md │ │ │ │ │ ├── extending-types.md │ │ │ │ │ ├── fixed-length-tuple.md │ │ │ │ │ ├── generics.md │ │ │ │ │ ├── getting-started-with-typescript.md │ │ │ │ │ ├── index-signatures.md │ │ │ │ │ ├── infer-type-inference-in-conditional-types.md │ │ │ │ │ ├── interface-and-type.md │ │ │ │ │ ├── intersection-types.md │ │ │ │ │ ├── introduction.md │ │ │ │ │ ├── literal-inference.md │ │ │ │ │ ├── literal-types.md │ │ │ │ │ ├── mapped-type-modifiers.md │ │ │ │ │ ├── mapped-types.md │ │ │ │ │ ├── merging-and-extension.md │ │ │ │ │ ├── named-tuple-type-labeled.md │ │ │ │ │ ├── namespacing.md │ │ │ │ │ ├── narrowing.md │ │ │ │ │ ├── never-type.md │ │ │ │ │ ├── object-types.md │ │ │ │ │ ├── optional-properties.md │ │ │ │ │ ├── others.md │ │ │ │ │ ├── overloads.md │ │ │ │ │ ├── predefined-conditional-types.md │ │ │ │ │ ├── primitive-types.md │ │ │ │ │ ├── readonly-properties.md │ │ │ │ │ ├── strictnullchecks.md │ │ │ │ │ ├── symbols.md │ │ │ │ │ ├── table-of-contents.md │ │ │ │ │ ├── template-union-types.md │ │ │ │ │ ├── the-concise-typescript-book.md │ │ │ │ │ ├── the-never-type.md │ │ │ │ │ ├── translations.md │ │ │ │ │ ├── triple-slash-directives.md │ │ │ │ │ ├── tuple-type-anonymous.md │ │ │ │ │ ├── type-annotations.md │ │ │ │ │ ├── type-from-func-return.md │ │ │ │ │ ├── type-from-module.md │ │ │ │ │ ├── type-from-value.md │ │ │ │ │ ├── type-indexing.md │ │ │ │ │ ├── type-manipulation.md │ │ │ │ │ ├── type-predicates.md │ │ │ │ │ ├── typescript-introduction.md │ │ │ │ │ ├── union-type.md │ │ │ │ │ ├── unknown-type.md │ │ │ │ │ └── void-type.md │ │ │ │ └── index.mdx │ │ │ ├── pt-br/ │ │ │ │ ├── book/ │ │ │ │ │ ├── about-the-author.md │ │ │ │ │ ├── any-type.md │ │ │ │ │ ├── assignments.md │ │ │ │ │ ├── built-in-type-primitives.md │ │ │ │ │ ├── class.md │ │ │ │ │ ├── common-built-in-js-objects.md │ │ │ │ │ ├── conditional-types.md │ │ │ │ │ ├── control-flow-analysis.md │ │ │ │ │ ├── differences-between-type-and-interface.md │ │ │ │ │ ├── discriminated-unions.md │ │ │ │ │ ├── distributive-conditional-types.md │ │ │ │ │ ├── downloads-and-website.md │ │ │ │ │ ├── enums.md │ │ │ │ │ ├── erased-structural-types.md │ │ │ │ │ ├── exhaustiveness-checking.md │ │ │ │ │ ├── exploring-the-type-system.md │ │ │ │ │ ├── extending-types.md │ │ │ │ │ ├── fixed-length-tuple.md │ │ │ │ │ ├── generics.md │ │ │ │ │ ├── getting-started-with-typescript.md │ │ │ │ │ ├── index-signatures.md │ │ │ │ │ ├── infer-type-inference-in-conditional-types.md │ │ │ │ │ ├── interface-and-type.md │ │ │ │ │ ├── intersection-types.md │ │ │ │ │ ├── introduction.md │ │ │ │ │ ├── literal-inference.md │ │ │ │ │ ├── literal-types.md │ │ │ │ │ ├── mapped-type-modifiers.md │ │ │ │ │ ├── mapped-types.md │ │ │ │ │ ├── merging-and-extension.md │ │ │ │ │ ├── named-tuple-type-labeled.md │ │ │ │ │ ├── namespacing.md │ │ │ │ │ ├── narrowing.md │ │ │ │ │ ├── never-type.md │ │ │ │ │ ├── object-types.md │ │ │ │ │ ├── optional-properties.md │ │ │ │ │ ├── others.md │ │ │ │ │ ├── overloads.md │ │ │ │ │ ├── predefined-conditional-types.md │ │ │ │ │ ├── primitive-types.md │ │ │ │ │ ├── readonly-properties.md │ │ │ │ │ ├── strictnullchecks.md │ │ │ │ │ ├── symbols.md │ │ │ │ │ ├── table-of-contents.md │ │ │ │ │ ├── template-union-types.md │ │ │ │ │ ├── the-concise-typescript-book.md │ │ │ │ │ ├── the-never-type.md │ │ │ │ │ ├── translations.md │ │ │ │ │ ├── triple-slash-directives.md │ │ │ │ │ ├── tuple-type-anonymous.md │ │ │ │ │ ├── type-annotations.md │ │ │ │ │ ├── type-from-func-return.md │ │ │ │ │ ├── type-from-module.md │ │ │ │ │ ├── type-from-value.md │ │ │ │ │ ├── type-indexing.md │ │ │ │ │ ├── type-manipulation.md │ │ │ │ │ ├── type-predicates.md │ │ │ │ │ ├── typescript-introduction.md │ │ │ │ │ ├── union-type.md │ │ │ │ │ ├── unknown-type.md │ │ │ │ │ └── void-type.md │ │ │ │ └── index.mdx │ │ │ ├── sv-se/ │ │ │ │ ├── book/ │ │ │ │ │ ├── about-the-author.md │ │ │ │ │ ├── any-type.md │ │ │ │ │ ├── assignments.md │ │ │ │ │ ├── built-in-type-primitives.md │ │ │ │ │ ├── class.md │ │ │ │ │ ├── common-built-in-js-objects.md │ │ │ │ │ ├── conditional-types.md │ │ │ │ │ ├── control-flow-analysis.md │ │ │ │ │ ├── differences-between-type-and-interface.md │ │ │ │ │ ├── discriminated-unions.md │ │ │ │ │ ├── distributive-conditional-types.md │ │ │ │ │ ├── downloads-and-website.md │ │ │ │ │ ├── enums.md │ │ │ │ │ ├── erased-structural-types.md │ │ │ │ │ ├── exhaustiveness-checking.md │ │ │ │ │ ├── exploring-the-type-system.md │ │ │ │ │ ├── extending-types.md │ │ │ │ │ ├── fixed-length-tuple.md │ │ │ │ │ ├── generics.md │ │ │ │ │ ├── getting-started-with-typescript.md │ │ │ │ │ ├── index-signatures.md │ │ │ │ │ ├── infer-type-inference-in-conditional-types.md │ │ │ │ │ ├── interface-and-type.md │ │ │ │ │ ├── intersection-types.md │ │ │ │ │ ├── introduction.md │ │ │ │ │ ├── literal-inference.md │ │ │ │ │ ├── literal-types.md │ │ │ │ │ ├── mapped-type-modifiers.md │ │ │ │ │ ├── mapped-types.md │ │ │ │ │ ├── merging-and-extension.md │ │ │ │ │ ├── named-tuple-type-labeled.md │ │ │ │ │ ├── namespacing.md │ │ │ │ │ ├── narrowing.md │ │ │ │ │ ├── never-type.md │ │ │ │ │ ├── object-types.md │ │ │ │ │ ├── optional-properties.md │ │ │ │ │ ├── others.md │ │ │ │ │ ├── overloads.md │ │ │ │ │ ├── predefined-conditional-types.md │ │ │ │ │ ├── primitive-types.md │ │ │ │ │ ├── readonly-properties.md │ │ │ │ │ ├── strictnullchecks.md │ │ │ │ │ ├── symbols.md │ │ │ │ │ ├── table-of-contents.md │ │ │ │ │ ├── template-union-types.md │ │ │ │ │ ├── the-concise-typescript-book.md │ │ │ │ │ ├── the-never-type.md │ │ │ │ │ ├── translations.md │ │ │ │ │ ├── triple-slash-directives.md │ │ │ │ │ ├── tuple-type-anonymous.md │ │ │ │ │ ├── type-annotations.md │ │ │ │ │ ├── type-from-func-return.md │ │ │ │ │ ├── type-from-module.md │ │ │ │ │ ├── type-from-value.md │ │ │ │ │ ├── type-indexing.md │ │ │ │ │ ├── type-manipulation.md │ │ │ │ │ ├── type-predicates.md │ │ │ │ │ ├── typescript-introduction.md │ │ │ │ │ ├── union-type.md │ │ │ │ │ ├── unknown-type.md │ │ │ │ │ └── void-type.md │ │ │ │ └── index.mdx │ │ │ └── zh-cn/ │ │ │ ├── book/ │ │ │ │ ├── about-the-author.md │ │ │ │ ├── any-type.md │ │ │ │ ├── assignments.md │ │ │ │ ├── built-in-type-primitives.md │ │ │ │ ├── class.md │ │ │ │ ├── common-built-in-js-objects.md │ │ │ │ ├── conditional-types.md │ │ │ │ ├── control-flow-analysis.md │ │ │ │ ├── differences-between-type-and-interface.md │ │ │ │ ├── discriminated-unions.md │ │ │ │ ├── distributive-conditional-types.md │ │ │ │ ├── downloads-and-website.md │ │ │ │ ├── enums.md │ │ │ │ ├── erased-structural-types.md │ │ │ │ ├── exhaustiveness-checking.md │ │ │ │ ├── exploring-the-type-system.md │ │ │ │ ├── extending-types.md │ │ │ │ ├── fixed-length-tuple.md │ │ │ │ ├── generics.md │ │ │ │ ├── getting-started-with-typescript.md │ │ │ │ ├── index-signatures.md │ │ │ │ ├── infer-type-inference-in-conditional-types.md │ │ │ │ ├── interface-and-type.md │ │ │ │ ├── intersection-types.md │ │ │ │ ├── introduction.md │ │ │ │ ├── literal-inference.md │ │ │ │ ├── literal-types.md │ │ │ │ ├── mapped-type-modifiers.md │ │ │ │ ├── mapped-types.md │ │ │ │ ├── merging-and-extension.md │ │ │ │ ├── named-tuple-type-labeled.md │ │ │ │ ├── namespacing.md │ │ │ │ ├── narrowing.md │ │ │ │ ├── never-type.md │ │ │ │ ├── object-types.md │ │ │ │ ├── optional-properties.md │ │ │ │ ├── others.md │ │ │ │ ├── overloads.md │ │ │ │ ├── predefined-conditional-types.md │ │ │ │ ├── primitive-types.md │ │ │ │ ├── readonly-properties.md │ │ │ │ ├── strictnullchecks.md │ │ │ │ ├── symbols.md │ │ │ │ ├── table-of-contents.md │ │ │ │ ├── template-union-types.md │ │ │ │ ├── the-concise-typescript-book.md │ │ │ │ ├── the-never-type.md │ │ │ │ ├── translations.md │ │ │ │ ├── triple-slash-directives.md │ │ │ │ ├── tuple-type-anonymous.md │ │ │ │ ├── type-annotations.md │ │ │ │ ├── type-from-func-return.md │ │ │ │ ├── type-from-module.md │ │ │ │ ├── type-from-value.md │ │ │ │ ├── type-indexing.md │ │ │ │ ├── type-manipulation.md │ │ │ │ ├── type-predicates.md │ │ │ │ ├── typescript-introduction.md │ │ │ │ ├── union-type.md │ │ │ │ ├── unknown-type.md │ │ │ │ └── void-type.md │ │ │ └── index.mdx │ │ └── i18n/ │ │ └── zh-cn.json │ ├── env.d.ts │ └── styles/ │ └── custom.css └── tsconfig.json