<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
    <channel>
        <title>Total TypeScript</title>
        <link>https://www.totaltypescript.com</link>
        <description>Learn how to use TypeScript to level-up your applications as a web developer through exercise driven self-paced workshops and tutorials hosted by TypeScript wizard Matt Pocock.</description>
        <lastBuildDate>Thu, 29 Feb 2024 12:16:55 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <copyright>Copyright © 2026 Matt Pocock</copyright>
        <item>
            <title><![CDATA[Solving TypeScript Errors (tutorial)]]></title>
            <link>https://www.totaltypescript.com/tutorials/solving-typescript-errors</link>
            <guid>https://www.totaltypescript.com/tutorials/solving-typescript-errors</guid>
            <pubDate>Thu, 30 Nov 2023 21:30:30 GMT</pubDate>
            <description><![CDATA[TypeScript boosts productivity but faces pitfalls like type mismatches, null values, & puzzling errors. Learn to spot & solve these for swift progress.]]></description>
        </item>
        <item>
            <title><![CDATA[React with TypeScript (tutorial)]]></title>
            <link>https://www.totaltypescript.com/tutorials/react-with-typescript</link>
            <guid>https://www.totaltypescript.com/tutorials/react-with-typescript</guid>
            <pubDate>Mon, 01 May 2023 19:43:38 GMT</pubDate>
            <description><![CDATA[Get productive building applications with React and TypeScript with our interactive guide on React's types - from component props to useRef.]]></description>
        </item>
        <item>
            <title><![CDATA[Beginner's TypeScript (tutorial)]]></title>
            <link>https://www.totaltypescript.com/tutorials/beginners-typescript</link>
            <guid>https://www.totaltypescript.com/tutorials/beginners-typescript</guid>
            <pubDate>Fri, 23 Sep 2022 23:13:43 GMT</pubDate>
            <description><![CDATA[Free interactive video tutorial that will help you get started with TypeScript.]]></description>
        </item>
        <item>
            <title><![CDATA[Zod (tutorial)]]></title>
            <link>https://www.totaltypescript.com/tutorials/zod</link>
            <guid>https://www.totaltypescript.com/tutorials/zod</guid>
            <pubDate>Thu, 25 Aug 2022 16:19:09 GMT</pubDate>
            <description><![CDATA[Zod is a TypeScript-first schema declaration and validation library. In this tutorial, Matt Pocock has prepared a set of exercises that will help you level up.]]></description>
        </item>
        <item>
            <title><![CDATA[Type Predicates (tip)]]></title>
            <link>https://www.totaltypescript.com/tips/type-predicates</link>
            <guid>https://www.totaltypescript.com/tips/type-predicates</guid>
            <pubDate>Wed, 01 Nov 2023 13:38:10 GMT</pubDate>
            <description><![CDATA[Understand how Type Predicates work in TypeScript, using an example of filtering a mixed array of elements.]]></description>
        </item>
        <item>
            <title><![CDATA[TypeScript 5.1 Beta is OUT! (tip)]]></title>
            <link>https://www.totaltypescript.com/tips/typescript-5-1-beta-is-out</link>
            <guid>https://www.totaltypescript.com/tips/typescript-5-1-beta-is-out</guid>
            <pubDate>Wed, 19 Apr 2023 11:50:53 GMT</pubDate>
            <description><![CDATA[TypeScript 5.1 is out! With important updates to React Server Components and some small usability updates.]]></description>
        </item>
        <item>
            <title><![CDATA[How to Name your Types (tip)]]></title>
            <link>https://www.totaltypescript.com/tips/how-to-name-your-types</link>
            <guid>https://www.totaltypescript.com/tips/how-to-name-your-types</guid>
            <pubDate>Wed, 12 Apr 2023 11:03:34 GMT</pubDate>
            <description><![CDATA[How to name your types in TypeScript can be a tricky business. Matt takes you through his opinionated heuristics for how to decide.]]></description>
        </item>
        <item>
            <title><![CDATA[Don't use return types, unless... (tip)]]></title>
            <link>https://www.totaltypescript.com/tips/dont-use-return-types-unless</link>
            <guid>https://www.totaltypescript.com/tips/dont-use-return-types-unless</guid>
            <pubDate>Wed, 01 Feb 2023 10:24:45 GMT</pubDate>
            <description><![CDATA[When should you use return types in TypeScript? The use cases are narrower than you might think...]]></description>
        </item>
        <item>
            <title><![CDATA[TypeScript 5.0 Beta Deep Dive (tip)]]></title>
            <link>https://www.totaltypescript.com/tips/typescript-5-0-beta-deep-dive</link>
            <guid>https://www.totaltypescript.com/tips/typescript-5-0-beta-deep-dive</guid>
            <pubDate>Fri, 27 Jan 2023 12:00:06 GMT</pubDate>
            <description><![CDATA[TypeScript 5.0 beta brings a bunch of exciting features, including const annotations and decorators.]]></description>
        </item>
        <item>
            <title><![CDATA[Conform a Derived Type Without Losing Its Literal Values (tip)]]></title>
            <link>https://www.totaltypescript.com/tips/conform-a-derived-type-without-losing-its-literal-values</link>
            <guid>https://www.totaltypescript.com/tips/conform-a-derived-type-without-losing-its-literal-values</guid>
            <pubDate>Wed, 26 Oct 2022 17:54:33 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Avoid unexpected behavior of React’s useState (tip)]]></title>
            <link>https://www.totaltypescript.com/tips/avoid-unexpected-behaviour-of-react-s-usestate</link>
            <guid>https://www.totaltypescript.com/tips/avoid-unexpected-behaviour-of-react-s-usestate</guid>
            <pubDate>Fri, 23 Sep 2022 08:54:43 GMT</pubDate>
            <description><![CDATA[React's useState can behave in slightly unexpected ways in TypeScript - sometimes giving you undefined when you least expect it.]]></description>
        </item>
        <item>
            <title><![CDATA[Understand assignability in TypeScript (tip)]]></title>
            <link>https://www.totaltypescript.com/tips/understand-assignability-in-typescript</link>
            <guid>https://www.totaltypescript.com/tips/understand-assignability-in-typescript</guid>
            <pubDate>Fri, 23 Sep 2022 08:53:29 GMT</pubDate>
            <description><![CDATA[I often find conditional types SUPER hard to read. Here's how to get a better mental model for assignability in TypeScript.]]></description>
        </item>
        <item>
            <title><![CDATA[Compare function overloads and generics (tip)]]></title>
            <link>https://www.totaltypescript.com/tips/compare-function-overloads-and-generics</link>
            <guid>https://www.totaltypescript.com/tips/compare-function-overloads-and-generics</guid>
            <pubDate>Fri, 23 Sep 2022 08:50:57 GMT</pubDate>
            <description><![CDATA[A simple function - returnWhatIPassIn - can be enough to stump many newbie TypeScript devs.]]></description>
        </item>
        <item>
            <title><![CDATA[Use infer in combination with string literals to manipulate keys of objects (tip)]]></title>
            <link>https://www.totaltypescript.com/tips/use-infer-in-combination-with-string-literals-to-manipulate-keys-of-objects</link>
            <guid>https://www.totaltypescript.com/tips/use-infer-in-combination-with-string-literals-to-manipulate-keys-of-objects</guid>
            <pubDate>Fri, 23 Sep 2022 08:50:17 GMT</pubDate>
            <description><![CDATA[Still struggling with infer? How about this - you can use it in combination with string literals to manipulate keys of objects.]]></description>
        </item>
        <item>
            <title><![CDATA[Access deeper parts of objects and arrays (tip)]]></title>
            <link>https://www.totaltypescript.com/tips/access-deeper-parts-of-objects-and-arrays</link>
            <guid>https://www.totaltypescript.com/tips/access-deeper-parts-of-objects-and-arrays</guid>
            <pubDate>Fri, 23 Sep 2022 08:49:44 GMT</pubDate>
            <description><![CDATA[Accessing object values and array members is MUCH more powerful in the type world than it is in the runtime world.]]></description>
        </item>
        <item>
            <title><![CDATA[Ensure that all call sites must be given value (tip)]]></title>
            <link>https://www.totaltypescript.com/tips/ensure-that-all-call-sites-must-be-given-value</link>
            <guid>https://www.totaltypescript.com/tips/ensure-that-all-call-sites-must-be-given-value</guid>
            <pubDate>Fri, 23 Sep 2022 08:47:53 GMT</pubDate>
            <description><![CDATA[This one little tip has saved me hours of refactoring time. Passing string | undefined instead of ?: string ensures that ALL call sites must be given a value.]]></description>
        </item>
        <item>
            <title><![CDATA[Understand how TypeScript infers literal types (tip)]]></title>
            <link>https://www.totaltypescript.com/tips/understand-how-typescript-infers-literal-types</link>
            <guid>https://www.totaltypescript.com/tips/understand-how-typescript-infers-literal-types</guid>
            <pubDate>Fri, 23 Sep 2022 08:47:04 GMT</pubDate>
            <description><![CDATA[This mental model is INCREDIBLY useful for all sorts of intermediate-advanced typings.]]></description>
        </item>
        <item>
            <title><![CDATA[Get a TypeScript package ready for release to NPM in under 2 minutes (tip)]]></title>
            <link>https://www.totaltypescript.com/tips/get-a-typescript-package-ready-for-release-to-npm-in-under-2-minutes</link>
            <guid>https://www.totaltypescript.com/tips/get-a-typescript-package-ready-for-release-to-npm-in-under-2-minutes</guid>
            <pubDate>Fri, 23 Sep 2022 08:30:56 GMT</pubDate>
            <description><![CDATA[If you're thinking about putting a TypeScript package up to NPM, you should be considering preconstruct.]]></description>
        </item>
        <item>
            <title><![CDATA[Use assertion functions inside classes (tip)]]></title>
            <link>https://www.totaltypescript.com/tips/use-assertion-functions-inside-classes</link>
            <guid>https://www.totaltypescript.com/tips/use-assertion-functions-inside-classes</guid>
            <pubDate>Thu, 22 Sep 2022 15:40:38 GMT</pubDate>
            <description><![CDATA[You can do some really, really neat stuff with assertion functions inside classes.]]></description>
        </item>
        <item>
            <title><![CDATA[Assign local variables to default generic slots to dry up your code and improve performance (tip)]]></title>
            <link>https://www.totaltypescript.com/tips/assign-local-variables-to-default-generic-slots-to-dry-up-your-code-and-improve-performance</link>
            <guid>https://www.totaltypescript.com/tips/assign-local-variables-to-default-generic-slots-to-dry-up-your-code-and-improve-performance</guid>
            <pubDate>Thu, 22 Sep 2022 15:28:59 GMT</pubDate>
            <description><![CDATA[You can DRY up your generics code MASSIVELY (and improve perf) by assigning local variables to default generic slots.]]></description>
        </item>
        <item>
            <title><![CDATA[Know when to use generics (tip)]]></title>
            <link>https://www.totaltypescript.com/tips/know-when-to-use-generics</link>
            <guid>https://www.totaltypescript.com/tips/know-when-to-use-generics</guid>
            <pubDate>Thu, 22 Sep 2022 15:28:22 GMT</pubDate>
            <description><![CDATA[It can be hard to know when to reach for generics. I'll show you when you need them.]]></description>
        </item>
        <item>
            <title><![CDATA[Map over a union type (tip)]]></title>
            <link>https://www.totaltypescript.com/tips/map-over-a-union-type</link>
            <guid>https://www.totaltypescript.com/tips/map-over-a-union-type</guid>
            <pubDate>Thu, 22 Sep 2022 15:27:23 GMT</pubDate>
            <description><![CDATA[Mapping over a union type can feel tricky to conceptualise. But actually, TypeScript does it all for you - using Distributive Conditional Types.]]></description>
        </item>
        <item>
            <title><![CDATA[Make accessing objects safer by enabling 'noUncheckedIndexedAccess' in tsconfig (tip)]]></title>
            <link>https://www.totaltypescript.com/tips/make-accessing-objects-safer-by-enabling-nouncheckedindexedaccess-in-tsconfig</link>
            <guid>https://www.totaltypescript.com/tips/make-accessing-objects-safer-by-enabling-nouncheckedindexedaccess-in-tsconfig</guid>
            <pubDate>Thu, 22 Sep 2022 15:26:38 GMT</pubDate>
            <description><![CDATA[The "noUncheckedIndexedAccess" is the most awesome config option you've never heard of.]]></description>
        </item>
        <item>
            <title><![CDATA[Use generics to dynamically specify the number, and type, of arguments to functions (tip)]]></title>
            <link>https://www.totaltypescript.com/tips/use-generics-to-dynamically-specify-the-number-and-type-of-arguments-to-functions</link>
            <guid>https://www.totaltypescript.com/tips/use-generics-to-dynamically-specify-the-number-and-type-of-arguments-to-functions</guid>
            <pubDate>Thu, 22 Sep 2022 15:25:55 GMT</pubDate>
            <description><![CDATA[You can use generics to dynamically specify the number, and type, of arguments to functions. ]]></description>
        </item>
        <item>
            <title><![CDATA[Use 'declare global' to allow types to cross module boundaries (tip)]]></title>
            <link>https://www.totaltypescript.com/tips/use-declare-global-to-allow-types-to-cross-module-boundaries</link>
            <guid>https://www.totaltypescript.com/tips/use-declare-global-to-allow-types-to-cross-module-boundaries</guid>
            <pubDate>Thu, 22 Sep 2022 15:20:29 GMT</pubDate>
            <description><![CDATA[Globals in TypeScript?! 🤯 'declare global' is a super useful tool for when you want to allow types to cross module boundaries.]]></description>
        </item>
        <item>
            <title><![CDATA[Turn a module into a type (tip)]]></title>
            <link>https://www.totaltypescript.com/tips/turn-a-module-into-a-type</link>
            <guid>https://www.totaltypescript.com/tips/turn-a-module-into-a-type</guid>
            <pubDate>Thu, 22 Sep 2022 15:19:17 GMT</pubDate>
            <description><![CDATA[Want to turn a module into a type? You can use typeof import('./') to grab the type of any module, even third-party ones. ]]></description>
        </item>
        <item>
            <title><![CDATA[Create autocomplete helper which allows for arbitrary values (tip)]]></title>
            <link>https://www.totaltypescript.com/tips/create-autocomplete-helper-which-allows-for-arbitrary-values</link>
            <guid>https://www.totaltypescript.com/tips/create-autocomplete-helper-which-allows-for-arbitrary-values</guid>
            <pubDate>Thu, 22 Sep 2022 15:16:27 GMT</pubDate>
            <description><![CDATA[Ever wanted just a bit of autocomplete? Here, we create a TypeScript helper called LooseAutocomplete which allows arbitrary values.]]></description>
        </item>
        <item>
            <title><![CDATA[Use deep partials to help with mocking an entity (tip)]]></title>
            <link>https://www.totaltypescript.com/tips/use-deep-partials-to-help-with-mocking-an-entity</link>
            <guid>https://www.totaltypescript.com/tips/use-deep-partials-to-help-with-mocking-an-entity</guid>
            <pubDate>Thu, 22 Sep 2022 15:14:50 GMT</pubDate>
            <description><![CDATA[Deep partials are SUPER useful and not natively supported by TypeScript. Here, I use one to help with mocking an entity in a (imaginary) test file.]]></description>
        </item>
        <item>
            <title><![CDATA[Throw detailed error messages for type checks (tip)]]></title>
            <link>https://www.totaltypescript.com/tips/throw-detailed-error-messages-for-type-checks</link>
            <guid>https://www.totaltypescript.com/tips/throw-detailed-error-messages-for-type-checks</guid>
            <pubDate>Thu, 22 Sep 2022 15:14:22 GMT</pubDate>
            <description><![CDATA[Using a crazy trick I picked up from @AndaristRake, you can throw detailed error messages for type checks.]]></description>
        </item>
        <item>
            <title><![CDATA[Create a 'key remover' function which can process any generic object (tip)]]></title>
            <link>https://www.totaltypescript.com/tips/create-a-key-remover-function-which-can-process-any-generic-object</link>
            <guid>https://www.totaltypescript.com/tips/create-a-key-remover-function-which-can-process-any-generic-object</guid>
            <pubDate>Thu, 22 Sep 2022 15:13:26 GMT</pubDate>
            <description><![CDATA[Generics can be 'locked in' by function calls, meaning that generics can be 'curried' through functions.]]></description>
        </item>
        <item>
            <title><![CDATA[Use generics in React to make dynamic and flexible components (tip)]]></title>
            <link>https://www.totaltypescript.com/tips/use-generics-in-react-to-make-dynamic-and-flexible-components</link>
            <guid>https://www.totaltypescript.com/tips/use-generics-in-react-to-make-dynamic-and-flexible-components</guid>
            <pubDate>Thu, 22 Sep 2022 14:22:14 GMT</pubDate>
            <description><![CDATA[You can use generics in React to make incredibly dynamic, flexible components. Here, I make a Table component with a generic 'items' type.]]></description>
        </item>
        <item>
            <title><![CDATA[Create your own 'objectKeys' function using generics and the 'keyof' operator  (tip)]]></title>
            <link>https://www.totaltypescript.com/tips/create-your-own-objectkeys-function-using-generics-and-the-keyof-operator</link>
            <guid>https://www.totaltypescript.com/tips/create-your-own-objectkeys-function-using-generics-and-the-keyof-operator</guid>
            <pubDate>Thu, 22 Sep 2022 14:21:16 GMT</pubDate>
            <description><![CDATA[The looseness of Object.keys can be a real pain point when using TypeScript. It's pretty simple to create a tighter version using generics and keyof operator.]]></description>
        </item>
        <item>
            <title><![CDATA[Write your own 'PropsFrom' helper to extract props from any React component (tip)]]></title>
            <link>https://www.totaltypescript.com/tips/write-your-own-propsfrom-helper-to-extract-props-from-any-react-component</link>
            <guid>https://www.totaltypescript.com/tips/write-your-own-propsfrom-helper-to-extract-props-from-any-react-component</guid>
            <pubDate>Thu, 22 Sep 2022 14:19:51 GMT</pubDate>
            <description><![CDATA[Type helpers change the game when it comes to types in your codebase. They help TypeScript infer more from your code - and make your types a lot more readable. ]]></description>
        </item>
        <item>
            <title><![CDATA[Use 'extends' keyword to narrow the value of a generic (tip)]]></title>
            <link>https://www.totaltypescript.com/tips/use-extends-keyword-to-narrow-the-value-of-a-generic</link>
            <guid>https://www.totaltypescript.com/tips/use-extends-keyword-to-narrow-the-value-of-a-generic</guid>
            <pubDate>Thu, 22 Sep 2022 14:19:24 GMT</pubDate>
            <description><![CDATA[The 'extends' keyword is very powerful in TypeScript. Here, I use it to narrow the value of a generic to enable some beautiful autocomplete/inference.]]></description>
        </item>
        <item>
            <title><![CDATA[Use function overloads and generics to type a compose function (tip)]]></title>
            <link>https://www.totaltypescript.com/tips/use-function-overloads-and-generics-to-type-a-compose-function</link>
            <guid>https://www.totaltypescript.com/tips/use-function-overloads-and-generics-to-type-a-compose-function</guid>
            <pubDate>Thu, 22 Sep 2022 14:18:51 GMT</pubDate>
            <description><![CDATA[Function overloads can be used in conjunction with generics to make incredibly complex and dynamic type signatures.]]></description>
        </item>
        <item>
            <title><![CDATA[Decode URL search params at the type level with ts-toolbelt (tip)]]></title>
            <link>https://www.totaltypescript.com/tips/decode-url-search-params-at-the-type-level-with-ts-toolbelt</link>
            <guid>https://www.totaltypescript.com/tips/decode-url-search-params-at-the-type-level-with-ts-toolbelt</guid>
            <pubDate>Wed, 21 Sep 2022 12:25:00 GMT</pubDate>
            <description><![CDATA[TypeScript's string interpolation powers are incredible, especially since 4.1. Add some utilities from ts-toolbelt, and you've got a stew going.]]></description>
        </item>
        <item>
            <title><![CDATA[Use 'in' operator to transform a union to another union (tip)]]></title>
            <link>https://www.totaltypescript.com/tips/use-in-operator-to-transform-a-union-to-another-union</link>
            <guid>https://www.totaltypescript.com/tips/use-in-operator-to-transform-a-union-to-another-union</guid>
            <pubDate>Wed, 21 Sep 2022 12:23:40 GMT</pubDate>
            <description><![CDATA[Transform a union to another union, using the in operator as a kind of for-loop. This pattern can be used for almost any kind of transformation.]]></description>
        </item>
        <item>
            <title><![CDATA[Derive a union type from an object (tip)]]></title>
            <link>https://www.totaltypescript.com/tips/derive-a-union-type-from-an-object</link>
            <guid>https://www.totaltypescript.com/tips/derive-a-union-type-from-an-object</guid>
            <pubDate>Wed, 21 Sep 2022 12:14:16 GMT</pubDate>
            <description><![CDATA[Learn how to derive a union type from an object - an incredibly useful switcheroo that's at the heart of most TS magic out there.]]></description>
        </item>
        <item>
            <title><![CDATA[Cursor Rules for Better AI Development (article)]]></title>
            <link>https://www.totaltypescript.com/cursor-rules-for-better-ai-development</link>
            <guid>https://www.totaltypescript.com/cursor-rules-for-better-ai-development</guid>
            <pubDate>Wed, 23 Apr 2025 16:45:00 GMT</pubDate>
            <description><![CDATA[Learn TypeScript cursor-rules for AI development. Covers best practices, JSDoc, structure. Differentiates workspace & global rules for better AI coding]]></description>
        </item>
        <item>
            <title><![CDATA[Should You Declare Return Types? (article)]]></title>
            <link>https://www.totaltypescript.com/should-you-declare-return-types</link>
            <guid>https://www.totaltypescript.com/should-you-declare-return-types</guid>
            <pubDate>Wed, 09 Apr 2025 14:25:50 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[TypeScript Announces Go Rewrite, Achieves 10x Speedup (article)]]></title>
            <link>https://www.totaltypescript.com/typescript-announces-go-rewrite</link>
            <guid>https://www.totaltypescript.com/typescript-announces-go-rewrite</guid>
            <pubDate>Tue, 11 Mar 2025 14:36:07 GMT</pubDate>
            <description><![CDATA[TypeScript announced a full rewrite of TypeScript in Go. In testing, this rewrite has achieved a 10x speedup in some repositories - and up to 15x in others.]]></description>
        </item>
        <item>
            <title><![CDATA[TypeScript 5.8 Ships --erasableSyntaxOnly To Disable Enums (article)]]></title>
            <link>https://www.totaltypescript.com/erasable-syntax-only</link>
            <guid>https://www.totaltypescript.com/erasable-syntax-only</guid>
            <pubDate>Fri, 24 Jan 2025 17:31:55 GMT</pubDate>
            <description><![CDATA[TypeScript 5.8's new erasableSyntaxOnly flag enforces pure type annotations by disabling enums, namespaces, and parameter properties.]]></description>
        </item>
        <item>
            <title><![CDATA[Node.js Now Supports TypeScript By Default (article)]]></title>
            <link>https://www.totaltypescript.com/typescript-is-coming-to-node-23</link>
            <guid>https://www.totaltypescript.com/typescript-is-coming-to-node-23</guid>
            <pubDate>Fri, 27 Dec 2024 16:31:28 GMT</pubDate>
            <description><![CDATA[TypeScript is coming to Node 23. Let's break down what that means.]]></description>
        </item>
        <item>
            <title><![CDATA[This Crazy Syntax Lets You Get An Array Element's Type (article)]]></title>
            <link>https://www.totaltypescript.com/get-the-type-of-an-array-element</link>
            <guid>https://www.totaltypescript.com/get-the-type-of-an-array-element</guid>
            <pubDate>Mon, 02 Sep 2024 10:16:40 GMT</pubDate>
            <description><![CDATA[Learn how to extract the type of an array element in TypeScript using the powerful `Array[number]` trick.]]></description>
        </item>
        <item>
            <title><![CDATA[How To Create An NPM Package (article)]]></title>
            <link>https://www.totaltypescript.com/how-to-create-an-npm-package</link>
            <guid>https://www.totaltypescript.com/how-to-create-an-npm-package</guid>
            <pubDate>Wed, 21 Aug 2024 15:36:51 GMT</pubDate>
            <description><![CDATA[Learn how to publish a package to npm with a complete setup including, TypeScript, Prettier, Vitest, GitHub Actions, and versioning with Changesets.]]></description>
        </item>
        <item>
            <title><![CDATA[Why I Don't Like Enums (article)]]></title>
            <link>https://www.totaltypescript.com/why-i-dont-like-typescript-enums</link>
            <guid>https://www.totaltypescript.com/why-i-dont-like-typescript-enums</guid>
            <pubDate>Wed, 14 Aug 2024 12:21:09 GMT</pubDate>
            <description><![CDATA[Enums in TypeScript can be confusing, with differences between numeric and string enums causing unexpected behaviors.]]></description>
        </item>
        <item>
            <title><![CDATA[Is TypeScript Just A Linter? (article)]]></title>
            <link>https://www.totaltypescript.com/is-typescript-just-a-linter</link>
            <guid>https://www.totaltypescript.com/is-typescript-just-a-linter</guid>
            <pubDate>Mon, 15 Jul 2024 14:20:42 GMT</pubDate>
            <description><![CDATA[Is TypeScript just a linter? No, but yes.]]></description>
        </item>
        <item>
            <title><![CDATA[Announcing: A Free Book, A New Course, A Huge Price Cut... (article)]]></title>
            <link>https://www.totaltypescript.com/announcing-a-free-book-a-course-a-huge-price-cut</link>
            <guid>https://www.totaltypescript.com/announcing-a-free-book-a-course-a-huge-price-cut</guid>
            <pubDate>Mon, 08 Jul 2024 10:26:19 GMT</pubDate>
            <description><![CDATA[It's a massive ship day. We're launching a free TypeScript book, new course, giveaway, price cut, and sale.]]></description>
        </item>
        <item>
            <title><![CDATA[Sometimes, Object Property Order Matters (article)]]></title>
            <link>https://www.totaltypescript.com/property-order-matters</link>
            <guid>https://www.totaltypescript.com/property-order-matters</guid>
            <pubDate>Tue, 11 Jun 2024 15:40:24 GMT</pubDate>
            <description><![CDATA[Learn why the order you specify object properties in TypeScript matters and how it can affect type inference in your functions.]]></description>
        </item>
        <item>
            <title><![CDATA[How To Use Corepack (article)]]></title>
            <link>https://www.totaltypescript.com/how-to-use-corepack</link>
            <guid>https://www.totaltypescript.com/how-to-use-corepack</guid>
            <pubDate>Sun, 02 Jun 2024 08:28:26 GMT</pubDate>
            <description><![CDATA[Learn how to use `corepack` to configure package managers in Node.js projects, ensuring you always use the correct one.]]></description>
        </item>
        <item>
            <title><![CDATA[How To Strongly Type process.env (article)]]></title>
            <link>https://www.totaltypescript.com/how-to-strongly-type-process-env</link>
            <guid>https://www.totaltypescript.com/how-to-strongly-type-process-env</guid>
            <pubDate>Thu, 04 Apr 2024 15:03:37 GMT</pubDate>
            <description><![CDATA[Learn how to strongly type process.env in TypeScript by either augmenting global type or validating it at runtime with t3-env.]]></description>
        </item>
        <item>
            <title><![CDATA[`any` Considered Harmful, Except For These Cases (article)]]></title>
            <link>https://www.totaltypescript.com/any-considered-harmful</link>
            <guid>https://www.totaltypescript.com/any-considered-harmful</guid>
            <pubDate>Wed, 27 Mar 2024 08:33:27 GMT</pubDate>
            <description><![CDATA[Discover when it's appropriate to use TypeScript's `any` type despite its risks. Learn about legitimate cases where `any` is necessary.]]></description>
        </item>
        <item>
            <title><![CDATA[No, TypeScript Types Don't Exist At Runtime (article)]]></title>
            <link>https://www.totaltypescript.com/typescript-types-dont-exist-at-runtime</link>
            <guid>https://www.totaltypescript.com/typescript-types-dont-exist-at-runtime</guid>
            <pubDate>Mon, 25 Mar 2024 09:15:44 GMT</pubDate>
            <description><![CDATA[Learn why TypeScript's types don't exist at runtime. Discover how TypeScript compiles down to JavaScript and how it differs from other strongly-typed languages.]]></description>
        </item>
        <item>
            <title><![CDATA[This Pattern Will Wreck Your React App's TS Performance (article)]]></title>
            <link>https://www.totaltypescript.com/react-apps-ts-performance</link>
            <guid>https://www.totaltypescript.com/react-apps-ts-performance</guid>
            <pubDate>Wed, 20 Mar 2024 16:57:34 GMT</pubDate>
            <description><![CDATA[Improve React TypeScript performance by replacing type & with interface extends. Boost IDE and tsc speed significantly.]]></description>
        </item>
        <item>
            <title><![CDATA[Deriving vs Decoupling: When NOT To Be A TypeScript Wizard (article)]]></title>
            <link>https://www.totaltypescript.com/deriving-vs-decoupling</link>
            <guid>https://www.totaltypescript.com/deriving-vs-decoupling</guid>
            <pubDate>Wed, 20 Mar 2024 11:19:35 GMT</pubDate>
            <description><![CDATA[In this book teaser, we discuss deriving vs decoupling your types: when building relationships between your types or segregating them makes sense.]]></description>
        </item>
        <item>
            <title><![CDATA[NoInfer: TypeScript 5.4's New Utility Type (article)]]></title>
            <link>https://www.totaltypescript.com/noinfer</link>
            <guid>https://www.totaltypescript.com/noinfer</guid>
            <pubDate>Tue, 19 Mar 2024 19:16:52 GMT</pubDate>
            <description><![CDATA[Learn how TypeScript's new utility type, NoInfer, can improve inference behavior by controlling where types are inferred in generic functions.]]></description>
        </item>
        <item>
            <title><![CDATA[Build a Node App with TypeScript (article)]]></title>
            <link>https://www.totaltypescript.com/typescript-and-node</link>
            <guid>https://www.totaltypescript.com/typescript-and-node</guid>
            <pubDate>Sun, 17 Mar 2024 13:01:56 GMT</pubDate>
            <description><![CDATA[Learn how to set up TypeScript to bundle a Node app using pnpm, Node.js, TypeScript, and ES Modules for a seamless development experience.]]></description>
        </item>
        <item>
            <title><![CDATA[Type Predicate Inference: The TS 5.5 Feature No One Expected (article)]]></title>
            <link>https://www.totaltypescript.com/type-predicate-inference</link>
            <guid>https://www.totaltypescript.com/type-predicate-inference</guid>
            <pubDate>Sun, 17 Mar 2024 09:02:00 GMT</pubDate>
            <description><![CDATA[TypeScript 5.5 introduces type predicate inference from function bodies, simplifying type narrowing and making development easier.]]></description>
        </item>
        <item>
            <title><![CDATA[You Can't Make Children "Type Safe" in React & TypeScript (article)]]></title>
            <link>https://www.totaltypescript.com/type-safe-children-in-react-and-typescript</link>
            <guid>https://www.totaltypescript.com/type-safe-children-in-react-and-typescript</guid>
            <pubDate>Fri, 15 Mar 2024 16:11:52 GMT</pubDate>
            <description><![CDATA[Learn why it's not possible to restrict the type of children in React components with TypeScript.]]></description>
        </item>
        <item>
            <title><![CDATA[Make Your Functions More Reusable With Generics (article)]]></title>
            <link>https://www.totaltypescript.com/make-your-functions-more-reusable-with-generics</link>
            <guid>https://www.totaltypescript.com/make-your-functions-more-reusable-with-generics</guid>
            <pubDate>Wed, 13 Mar 2024 14:51:20 GMT</pubDate>
            <description><![CDATA[Learn how to make TypeScript functions more flexible and type-safe by using type parameters instead of using 'any'. Improve code reusability and safety.]]></description>
        </item>
        <item>
            <title><![CDATA[How To Type Array.reduce (article)]]></title>
            <link>https://www.totaltypescript.com/how-to-type-array-reduce</link>
            <guid>https://www.totaltypescript.com/how-to-type-array-reduce</guid>
            <pubDate>Wed, 13 Mar 2024 13:00:04 GMT</pubDate>
            <description><![CDATA[Learn how to handle errors when using Array.reduce to transform arrays into objects in TypeScript. Fix the error by annotating types or using type arguments.]]></description>
        </item>
        <item>
            <title><![CDATA[How let and const Work In TypeScript (article)]]></title>
            <link>https://www.totaltypescript.com/let-and-const</link>
            <guid>https://www.totaltypescript.com/let-and-const</guid>
            <pubDate>Fri, 23 Feb 2024 14:47:52 GMT</pubDate>
            <description><![CDATA[Whether you use let or const in TypeScript affects whether or not their values can be changed, and how TypeScript infers them.]]></description>
        </item>
        <item>
            <title><![CDATA[How To Pass Types To Functions (article)]]></title>
            <link>https://www.totaltypescript.com/passing-types-to-functions</link>
            <guid>https://www.totaltypescript.com/passing-types-to-functions</guid>
            <pubDate>Thu, 22 Feb 2024 15:46:16 GMT</pubDate>
            <description><![CDATA[Learn how to use typescript generics to pass types in constructs like Array<string> and Set<string>.]]></description>
        </item>
        <item>
            <title><![CDATA[When 'as never' Is The Only Thing That Works (article)]]></title>
            <link>https://www.totaltypescript.com/as-never</link>
            <guid>https://www.totaltypescript.com/as-never</guid>
            <pubDate>Mon, 05 Feb 2024 11:12:22 GMT</pubDate>
            <description><![CDATA[In TypeScript, the `as never` type assertion is occasionally needed when dealing with unions of functions with incompatible parameter types.]]></description>
        </item>
        <item>
            <title><![CDATA[Method Shorthand Syntax Considered Harmful (article)]]></title>
            <link>https://www.totaltypescript.com/method-shorthand-syntax-considered-harmful</link>
            <guid>https://www.totaltypescript.com/method-shorthand-syntax-considered-harmful</guid>
            <pubDate>Sat, 03 Feb 2024 10:49:21 GMT</pubDate>
            <description><![CDATA[Using the method shorthand syntax for function annotations in TypeScript can result in runtime errors. It is recommended to use object property syntax instead.]]></description>
        </item>
        <item>
            <title><![CDATA[How To Use forwardRef With Generic Components (article)]]></title>
            <link>https://www.totaltypescript.com/forwardref-with-generic-components</link>
            <guid>https://www.totaltypescript.com/forwardref-with-generic-components</guid>
            <pubDate>Wed, 31 Jan 2024 14:25:39 GMT</pubDate>
            <description><![CDATA[Learn about the limitations of React's `forwardRef` TypeScript and discover a solution to enable inference on generic components.]]></description>
        </item>
        <item>
            <title><![CDATA[The TypeScript 5.3 Feature They Didn't Tell You About (article)]]></title>
            <link>https://www.totaltypescript.com/the-typescript-5-3-feature-they-didn-t-tell-you-about</link>
            <guid>https://www.totaltypescript.com/the-typescript-5-3-feature-they-didn-t-tell-you-about</guid>
            <pubDate>Wed, 29 Nov 2023 13:13:04 GMT</pubDate>
            <description><![CDATA[TypeScript 5.3 introduces relaxed rules around readonly arrays and improvements in const type parameters.]]></description>
        </item>
        <item>
            <title><![CDATA["Sorry, I Need A TypeScript Playground In Order To Help" (article)]]></title>
            <link>https://www.totaltypescript.com/need-a-playground</link>
            <guid>https://www.totaltypescript.com/need-a-playground</guid>
            <pubDate>Wed, 25 Oct 2023 13:32:35 GMT</pubDate>
            <description><![CDATA[Learn how to provide a TypeScript playground when asking for help with your TypeScript questions, making it easier for others to assist you.]]></description>
        </item>
        <item>
            <title><![CDATA[Event Types in React and TypeScript (article)]]></title>
            <link>https://www.totaltypescript.com/event-types-in-react-and-typescript</link>
            <guid>https://www.totaltypescript.com/event-types-in-react-and-typescript</guid>
            <pubDate>Tue, 24 Oct 2023 08:51:57 GMT</pubDate>
            <description><![CDATA[Learn how to work with events in React and TypeScript, from onClick to onSubmit.]]></description>
        </item>
        <item>
            <title><![CDATA[Build a Node App With TypeScript & ESBuild (article)]]></title>
            <link>https://www.totaltypescript.com/build-a-node-app-with-typescript-and-esbuild</link>
            <guid>https://www.totaltypescript.com/build-a-node-app-with-typescript-and-esbuild</guid>
            <pubDate>Tue, 17 Oct 2023 10:15:58 GMT</pubDate>
            <description><![CDATA[A step-by-step guide on setting up ESBuild to bundle a Node application.]]></description>
        </item>
        <item>
            <title><![CDATA[Relative import paths need explicit file extensions in EcmaScript imports (article)]]></title>
            <link>https://www.totaltypescript.com/relative-import-paths-need-explicit-file-extensions-in-ecmascript-imports</link>
            <guid>https://www.totaltypescript.com/relative-import-paths-need-explicit-file-extensions-in-ecmascript-imports</guid>
            <pubDate>Tue, 10 Oct 2023 10:11:14 GMT</pubDate>
            <description><![CDATA[When using '--moduleResolution' with the option 'nodenext', it is necessary to add explicit file extensions to relative import paths in EcmaScript imports.]]></description>
        </item>
        <item>
            <title><![CDATA[Add TypeScript To An Existing React Project (article)]]></title>
            <link>https://www.totaltypescript.com/add-typescript-to-existing-react-project</link>
            <guid>https://www.totaltypescript.com/add-typescript-to-existing-react-project</guid>
            <pubDate>Fri, 15 Sep 2023 10:34:26 GMT</pubDate>
            <description><![CDATA[Learn how to add TypeScript to your existing React project in a few simple steps.]]></description>
        </item>
        <item>
            <title><![CDATA[The TSConfig Cheat Sheet (article)]]></title>
            <link>https://www.totaltypescript.com/tsconfig-cheat-sheet</link>
            <guid>https://www.totaltypescript.com/tsconfig-cheat-sheet</guid>
            <pubDate>Wed, 13 Sep 2023 15:49:01 GMT</pubDate>
            <description><![CDATA[Learn the essential TypeScript configuration options and create a concise tsconfig.json file for your projects with this helpful cheatsheet.]]></description>
        </item>
        <item>
            <title><![CDATA[Are Big Projects Ditching TypeScript? (article)]]></title>
            <link>https://www.totaltypescript.com/are-big-projects-ditching-typescript</link>
            <guid>https://www.totaltypescript.com/are-big-projects-ditching-typescript</guid>
            <pubDate>Mon, 11 Sep 2023 14:31:02 GMT</pubDate>
            <description><![CDATA[Big projects like Svelte and Drizzle are not abandoning TypeScript, despite some recent claims.]]></description>
        </item>
        <item>
            <title><![CDATA[How to Pass a Component as a Prop in React (article)]]></title>
            <link>https://www.totaltypescript.com/pass-component-as-prop-react</link>
            <guid>https://www.totaltypescript.com/pass-component-as-prop-react</guid>
            <pubDate>Mon, 04 Sep 2023 15:36:04 GMT</pubDate>
            <description><![CDATA[Learn different ways to pass a component as a prop in React: passing JSX, using React.ComponentType, and using React.ElementType.]]></description>
        </item>
        <item>
            <title><![CDATA[Intro To TypeScript Performance (article)]]></title>
            <link>https://www.totaltypescript.com/typescript-performance</link>
            <guid>https://www.totaltypescript.com/typescript-performance</guid>
            <pubDate>Mon, 04 Sep 2023 11:43:51 GMT</pubDate>
            <description><![CDATA[Learn about TypeScript performance and how it affects code type-checking speed, autocomplete, and build times in your editor.]]></description>
        </item>
        <item>
            <title><![CDATA[Strongly Typing React Props with TypeScript (article)]]></title>
            <link>https://www.totaltypescript.com/react-props-typescript</link>
            <guid>https://www.totaltypescript.com/react-props-typescript</guid>
            <pubDate>Mon, 04 Sep 2023 10:08:18 GMT</pubDate>
            <description><![CDATA[When typing React props in a TypeScript app, using interfaces is recommended, especially when dealing with complex intersections of props.]]></description>
        </item>
        <item>
            <title><![CDATA[How To Learn TypeScript In 2025 (article)]]></title>
            <link>https://www.totaltypescript.com/learn-typescript</link>
            <guid>https://www.totaltypescript.com/learn-typescript</guid>
            <pubDate>Thu, 31 Aug 2023 12:17:01 GMT</pubDate>
            <description><![CDATA[Learn TypeScript in 2023 with this step-by-step guide. Understand the basics, essential types, unions, and narrowing techniques.]]></description>
        </item>
        <item>
            <title><![CDATA[Override the Type of a JSON File (article)]]></title>
            <link>https://www.totaltypescript.com/override-the-type-of-a-json-file</link>
            <guid>https://www.totaltypescript.com/override-the-type-of-a-json-file</guid>
            <pubDate>Tue, 29 Aug 2023 09:26:08 GMT</pubDate>
            <description><![CDATA[Learn how to manually assign types to JSON imports in TypeScript by creating `.d.json.ts` files, which can greatly improve performance.]]></description>
        </item>
        <item>
            <title><![CDATA[What's Coming In TypeScript 5.3? (article)]]></title>
            <link>https://www.totaltypescript.com/typescript-5-3</link>
            <guid>https://www.totaltypescript.com/typescript-5-3</guid>
            <pubDate>Thu, 24 Aug 2023 11:43:10 GMT</pubDate>
            <description><![CDATA[TypeScript 5.3 is in the works, with potential features including Import Attributes, throw expressions, isolated declarations, and more.]]></description>
        </item>
        <item>
            <title><![CDATA[Array<T> vs T[]: Which is better? (article)]]></title>
            <link>https://www.totaltypescript.com/array-types-in-typescript</link>
            <guid>https://www.totaltypescript.com/array-types-in-typescript</guid>
            <pubDate>Tue, 22 Aug 2023 11:24:39 GMT</pubDate>
            <description><![CDATA[When declaring array types in TypeScript, you can choose between `Array<T>` and `T[]`. Both are identical, but there are some considerations to keep in mind.]]></description>
        </item>
        <item>
            <title><![CDATA[5 Ways to Use 'Satisfies' in TypeScript (article)]]></title>
            <link>https://www.totaltypescript.com/how-to-use-satisfies-operator</link>
            <guid>https://www.totaltypescript.com/how-to-use-satisfies-operator</guid>
            <pubDate>Wed, 02 Aug 2023 11:11:39 GMT</pubDate>
            <description><![CDATA[The `satisfies` operator in TypeScript allows for type annotations without sacrificing inference. Here's a few uses for it.]]></description>
        </item>
        <item>
            <title><![CDATA[6 Ways to Use Extract in TypeScript (article)]]></title>
            <link>https://www.totaltypescript.com/uses-for-extract-type-helper</link>
            <guid>https://www.totaltypescript.com/uses-for-extract-type-helper</guid>
            <pubDate>Wed, 02 Aug 2023 09:01:57 GMT</pubDate>
            <description><![CDATA[Learn how to use the `Extract` helper in TypeScript to extract specific members from a discriminated union or based on their shape.]]></description>
        </item>
        <item>
            <title><![CDATA[Explained: Cannot redeclare block-scoped variable (article)]]></title>
            <link>https://www.totaltypescript.com/cannot-redeclare-block-scoped-variable</link>
            <guid>https://www.totaltypescript.com/cannot-redeclare-block-scoped-variable</guid>
            <pubDate>Wed, 02 Aug 2023 07:57:18 GMT</pubDate>
            <description><![CDATA[If you receive a "Cannot redeclare block-scoped variable 'name'" error in TypeScript, it can be resolved by renaming the variable or changing its scope.]]></description>
        </item>
        <item>
            <title><![CDATA[Type vs Interface: Which Should You Use? (article)]]></title>
            <link>https://www.totaltypescript.com/type-vs-interface-which-should-you-use</link>
            <guid>https://www.totaltypescript.com/type-vs-interface-which-should-you-use</guid>
            <pubDate>Mon, 31 Jul 2023 09:32:44 GMT</pubDate>
            <description><![CDATA[Learn the key differences between interfaces and type aliases in TypeScript, including their use cases and important features to consider.]]></description>
        </item>
        <item>
            <title><![CDATA[Why You Can't Use Dot Notation On Types (article)]]></title>
            <link>https://www.totaltypescript.com/why-you-cant-use-dot-notation-on-types</link>
            <guid>https://www.totaltypescript.com/why-you-cant-use-dot-notation-on-types</guid>
            <pubDate>Wed, 26 Jul 2023 07:53:20 GMT</pubDate>
            <description><![CDATA[In TypeScript, dot notation cannot be used to access type properties, but indexed access types provide more flexibility and are already available.]]></description>
        </item>
        <item>
            <title><![CDATA[Strongly Type useRef with ElementRef (article)]]></title>
            <link>https://www.totaltypescript.com/strongly-type-useref-with-elementref</link>
            <guid>https://www.totaltypescript.com/strongly-type-useref-with-elementref</guid>
            <pubDate>Tue, 25 Jul 2023 14:36:13 GMT</pubDate>
            <description><![CDATA[Using useRef with native elements in React can be confusing, but ElementRef provides an easier solution by extracting the element type.]]></description>
        </item>
        <item>
            <title><![CDATA[Explained: Cannot use JSX unless the '--jsx' flag is provided (article)]]></title>
            <link>https://www.totaltypescript.com/cannot-use-jsx-unless-the-jsx-flag-is-provided</link>
            <guid>https://www.totaltypescript.com/cannot-use-jsx-unless-the-jsx-flag-is-provided</guid>
            <pubDate>Tue, 25 Jul 2023 13:34:19 GMT</pubDate>
            <description><![CDATA[Learn how to fix the "Cannot use JSX unless the --jsx flag is provided" error in TypeScript by updating your tsconfig.json file.]]></description>
        </item>
        <item>
            <title><![CDATA[There Is No Such Thing As A Generic (article)]]></title>
            <link>https://www.totaltypescript.com/no-such-thing-as-a-generic</link>
            <guid>https://www.totaltypescript.com/no-such-thing-as-a-generic</guid>
            <pubDate>Thu, 20 Jul 2023 14:01:04 GMT</pubDate>
            <description><![CDATA[Understanding generics can be challenging because the term is overloaded. Instead, use the terms "type arguments" and "type parameters" for clarity.]]></description>
        </item>
        <item>
            <title><![CDATA[TypeScript Generics in 3 Easy Patterns (article)]]></title>
            <link>https://www.totaltypescript.com/typescript-generics-in-three-easy-patterns</link>
            <guid>https://www.totaltypescript.com/typescript-generics-in-three-easy-patterns</guid>
            <pubDate>Tue, 18 Jul 2023 17:35:20 GMT</pubDate>
            <description><![CDATA[What you think of as "generics" in TypeScript are actually three different patterns.]]></description>
        </item>
        <item>
            <title><![CDATA[How to Iterate Over Object Keys in TypeScript (article)]]></title>
            <link>https://www.totaltypescript.com/iterate-over-object-keys-in-typescript</link>
            <guid>https://www.totaltypescript.com/iterate-over-object-keys-in-typescript</guid>
            <pubDate>Tue, 18 Jul 2023 13:29:53 GMT</pubDate>
            <description><![CDATA[Iterating over object keys in TypeScript can be challenging. One option is casting to keyof typeof to access values, or using type predicates.]]></description>
        </item>
        <item>
            <title><![CDATA[An `unknown` can't always fix an `any` (article)]]></title>
            <link>https://www.totaltypescript.com/an-unknown-cant-always-fix-an-any</link>
            <guid>https://www.totaltypescript.com/an-unknown-cant-always-fix-an-any</guid>
            <pubDate>Fri, 14 Jul 2023 18:16:43 GMT</pubDate>
            <description><![CDATA[Any `any` is a cause for concern because it disables type checking on the thing it's assigned to. This article explores the best way to avoid them in your code.]]></description>
        </item>
        <item>
            <title><![CDATA[My advice for security-critical TS apps (article)]]></title>
            <link>https://www.totaltypescript.com/my-advice-for-security-critical-ts-apps</link>
            <guid>https://www.totaltypescript.com/my-advice-for-security-critical-ts-apps</guid>
            <pubDate>Fri, 14 Jul 2023 18:13:28 GMT</pubDate>
            <description><![CDATA[Matt Pocock shares his advice for working on TypeScript apps where security is critical.]]></description>
        </item>
        <item>
            <title><![CDATA[Four Essential TypeScript Patterns You Can't Work Without (article)]]></title>
            <link>https://www.totaltypescript.com/four-essential-typescript-patterns</link>
            <guid>https://www.totaltypescript.com/four-essential-typescript-patterns</guid>
            <pubDate>Fri, 14 Jul 2023 18:08:08 GMT</pubDate>
            <description><![CDATA[This article discusses four of the most important patterns to know and use: Branded types, Globals, Assertion Functions & Type Predicates, and Classes.
]]></description>
        </item>
        <item>
            <title><![CDATA[Optional Chaining for Assignments Lands in Stage 1 (article)]]></title>
            <link>https://www.totaltypescript.com/optional-chaining-for-assignments</link>
            <guid>https://www.totaltypescript.com/optional-chaining-for-assignments</guid>
            <pubDate>Thu, 13 Jul 2023 14:17:44 GMT</pubDate>
            <description><![CDATA[The optional chaining for assignments proposal has reached Stage 1, allowing assignment to possibly undefined object properties.]]></description>
        </item>
        <item>
            <title><![CDATA[Type Argument Placeholders: TypeScript's Most Discussed Upcoming Feature (article)]]></title>
            <link>https://www.totaltypescript.com/type-argument-placeholders-typescript-5-2-most-discussed-feature</link>
            <guid>https://www.totaltypescript.com/type-argument-placeholders-typescript-5-2-most-discussed-feature</guid>
            <pubDate>Wed, 21 Jun 2023 11:35:24 GMT</pubDate>
            <description><![CDATA[TypeScript introduces type argument placeholders in version 5.2, which helps with partial inference and lets the language infer types for a function.]]></description>
        </item>
        <item>
            <title><![CDATA[The Empty Object Type in TypeScript (article)]]></title>
            <link>https://www.totaltypescript.com/the-empty-object-type-in-typescript</link>
            <guid>https://www.totaltypescript.com/the-empty-object-type-in-typescript</guid>
            <pubDate>Tue, 20 Jun 2023 09:42:33 GMT</pubDate>
            <description><![CDATA[Learn why {} in TypeScript doesn't represent an empty object, and how to use the Record type to represent an empty object.]]></description>
        </item>
        <item>
            <title><![CDATA[TypeScript 5.2's New Keyword: 'using' (article)]]></title>
            <link>https://www.totaltypescript.com/typescript-5-2-new-keyword-using</link>
            <guid>https://www.totaltypescript.com/typescript-5-2-new-keyword-using</guid>
            <pubDate>Fri, 16 Jun 2023 09:52:22 GMT</pubDate>
            <description><![CDATA[TypeScript 5.2 introduces 'using', a keyword that disposes anything with a `Symbol.dispose` function upon leaving scope, making resource management easier.]]></description>
        </item>
        <item>
            <title><![CDATA[Get Keys of an Object Where Values Are of a Given Type (article)]]></title>
            <link>https://www.totaltypescript.com/get-keys-of-an-object-where-values-are-of-a-given-type</link>
            <guid>https://www.totaltypescript.com/get-keys-of-an-object-where-values-are-of-a-given-type</guid>
            <pubDate>Thu, 15 Jun 2023 14:13:15 GMT</pubDate>
            <description><![CDATA[Learn how to retrieve object keys where the values are of a specific type in TypeScript using an immediate indexed mapped type.]]></description>
        </item>
        <item>
            <title><![CDATA[How to Properly Type Window (article)]]></title>
            <link>https://www.totaltypescript.com/how-to-properly-type-window</link>
            <guid>https://www.totaltypescript.com/how-to-properly-type-window</guid>
            <pubDate>Wed, 14 Jun 2023 10:24:28 GMT</pubDate>
            <description><![CDATA[Learn how to fix TypeScript errors regarding the 'Window' interface. Choose between three solutions to add types to the Window object.]]></description>
        </item>
        <item>
            <title><![CDATA[Since TypeScript 5.1, React.FC is now "fine" (article)]]></title>
            <link>https://www.totaltypescript.com/you-can-stop-hating-react-fc</link>
            <guid>https://www.totaltypescript.com/you-can-stop-hating-react-fc</guid>
            <pubDate>Mon, 12 Jun 2023 13:35:14 GMT</pubDate>
            <description><![CDATA[React.FC is now perfectly fine to use in TypeScript 5.1 and React 18. It no longer implicitly includes children and accepts more return types.]]></description>
        </item>
        <item>
            <title><![CDATA[What is JSX.IntrinsicElements? (article)]]></title>
            <link>https://www.totaltypescript.com/what-is-jsx-intrinsicelements</link>
            <guid>https://www.totaltypescript.com/what-is-jsx-intrinsicelements</guid>
            <pubDate>Tue, 30 May 2023 08:40:01 GMT</pubDate>
            <description><![CDATA[Learn about JSX.IntrinsicElements in TypeScript - the global type that defines native JSX elements and their props. Used by frameworks like React.]]></description>
        </item>
        <item>
            <title><![CDATA[Explained: 'React' refers to a UMD global (article)]]></title>
            <link>https://www.totaltypescript.com/react-refers-to-a-umd-global</link>
            <guid>https://www.totaltypescript.com/react-refers-to-a-umd-global</guid>
            <pubDate>Thu, 25 May 2023 13:49:49 GMT</pubDate>
            <description><![CDATA[Find out why this error occurs and learn how to fix it.]]></description>
        </item>
        <item>
            <title><![CDATA[React.ReactNode vs JSX.Element vs React.ReactElement (article)]]></title>
            <link>https://www.totaltypescript.com/jsx-element-vs-react-reactnode</link>
            <guid>https://www.totaltypescript.com/jsx-element-vs-react-reactnode</guid>
            <pubDate>Thu, 25 May 2023 13:45:15 GMT</pubDate>
            <description><![CDATA[Learn the differences between React.ReactNode and JSX.Element in TypeScript when working with React.]]></description>
        </item>
        <item>
            <title><![CDATA[Transform Any Union in TypeScript with the IIMT (article)]]></title>
            <link>https://www.totaltypescript.com/immediately-indexed-mapped-type</link>
            <guid>https://www.totaltypescript.com/immediately-indexed-mapped-type</guid>
            <pubDate>Wed, 24 May 2023 08:39:50 GMT</pubDate>
            <description><![CDATA[Since I first got into advanced TypeScript, I've been in love with a particular pattern.]]></description>
        </item>
        <item>
            <title><![CDATA[Where To Put Your Types in Application Code (article)]]></title>
            <link>https://www.totaltypescript.com/where-to-put-your-types-in-application-code</link>
            <guid>https://www.totaltypescript.com/where-to-put-your-types-in-application-code</guid>
            <pubDate>Tue, 23 May 2023 16:39:38 GMT</pubDate>
            <description><![CDATA[There are three rules to keep in mind when deciding where to put types in your application code.]]></description>
        </item>
        <item>
            <title><![CDATA[ComponentProps: React's Most Useful Type Helper (article)]]></title>
            <link>https://www.totaltypescript.com/react-component-props-type-helper</link>
            <guid>https://www.totaltypescript.com/react-component-props-type-helper</guid>
            <pubDate>Thu, 04 May 2023 10:15:56 GMT</pubDate>
            <description><![CDATA[Discover the power of ComponentProps in React and TypeScript.]]></description>
        </item>
        <item>
            <title><![CDATA[How to test your types (article)]]></title>
            <link>https://www.totaltypescript.com/how-to-test-your-types</link>
            <guid>https://www.totaltypescript.com/how-to-test-your-types</guid>
            <pubDate>Tue, 25 Apr 2023 15:43:39 GMT</pubDate>
            <description><![CDATA[Testing types is a crucial aspect of developing libraries in TypeScript. In this article, we explore three different ways to test your types.]]></description>
        </item>
        <item>
            <title><![CDATA[Everything you need to know about TypeScript 5.1 beta (article)]]></title>
            <link>https://www.totaltypescript.com/typescript-5-1-beta-breakdown</link>
            <guid>https://www.totaltypescript.com/typescript-5-1-beta-breakdown</guid>
            <pubDate>Fri, 21 Apr 2023 09:09:34 GMT</pubDate>
            <description><![CDATA[The TypeScript 5.1 beta is out - here's everything you need to know.]]></description>
        </item>
        <item>
            <title><![CDATA[Testing with TypeScript is Painful: Here's a Solution (article)]]></title>
            <link>https://www.totaltypescript.com/testing-with-typescript-is-painful-heres-a-solution</link>
            <guid>https://www.totaltypescript.com/testing-with-typescript-is-painful-heres-a-solution</guid>
            <pubDate>Tue, 11 Apr 2023 16:35:25 GMT</pubDate>
            <description><![CDATA[Testing code doesn't need to be typed so strictly, and sometimes tests need to pass the wrong type.]]></description>
        </item>
        <item>
            <title><![CDATA[Function types are weird in TypeScript (article)]]></title>
            <link>https://www.totaltypescript.com/function-types-are-weird-in-typescript</link>
            <guid>https://www.totaltypescript.com/function-types-are-weird-in-typescript</guid>
            <pubDate>Tue, 11 Apr 2023 14:30:49 GMT</pubDate>
            <description><![CDATA[The article discusses why TypeScript does not throw an error when a function that is assigned to a variable doesn't match its type.]]></description>
        </item>
        <item>
            <title><![CDATA[Const type parameters bring 'as const' to functions (article)]]></title>
            <link>https://www.totaltypescript.com/const-type-parameters</link>
            <guid>https://www.totaltypescript.com/const-type-parameters</guid>
            <pubDate>Tue, 11 Apr 2023 13:36:41 GMT</pubDate>
            <description><![CDATA[TypeScript 5.0 introduces const type parameters which are useful in preserving the literal types of objects passed to functions.]]></description>
        </item>
        <item>
            <title><![CDATA[9 Ways to Use Exclude in TypeScript (article)]]></title>
            <link>https://www.totaltypescript.com/uses-for-exclude-type-helper</link>
            <guid>https://www.totaltypescript.com/uses-for-exclude-type-helper</guid>
            <pubDate>Wed, 05 Apr 2023 11:18:23 GMT</pubDate>
            <description><![CDATA[Exclude is a very powerful utility type that can be used in a variety of ways. In this article, I'll show you 9 ways to use it along with code examples.]]></description>
        </item>
        <item>
            <title><![CDATA[TypeScript Discriminated Unions for Frontend Developers (article)]]></title>
            <link>https://www.totaltypescript.com/discriminated-unions-are-a-devs-best-friend</link>
            <guid>https://www.totaltypescript.com/discriminated-unions-are-a-devs-best-friend</guid>
            <pubDate>Wed, 29 Mar 2023 15:32:25 GMT</pubDate>
            <description><![CDATA[Discriminated Unions make frontend development easier by representing the different application states and helping to make connections between data and UI.
]]></description>
        </item>
        <item>
            <title><![CDATA[Clarifying the `satisfies` Operator (article)]]></title>
            <link>https://www.totaltypescript.com/clarifying-the-satisfies-operator</link>
            <guid>https://www.totaltypescript.com/clarifying-the-satisfies-operator</guid>
            <pubDate>Mon, 13 Mar 2023 22:06:14 GMT</pubDate>
            <description><![CDATA[Using the satisfies keyword is one of four ways to make type assignments in TypeScript. But when should you use it?]]></description>
        </item>
        <item>
            <title><![CDATA[Structure of a TypeScript Error (article)]]></title>
            <link>https://www.totaltypescript.com/structure-of-a-typescript-error</link>
            <guid>https://www.totaltypescript.com/structure-of-a-typescript-error</guid>
            <pubDate>Mon, 09 Jan 2023 13:50:25 GMT</pubDate>
            <description><![CDATA[Understand why TypeScript throws complicated errors by learning how to read them.]]></description>
        </item>
        <item>
            <title><![CDATA[Building the Mental Model for Generics (article)]]></title>
            <link>https://www.totaltypescript.com/mental-model-for-typescript-generics</link>
            <guid>https://www.totaltypescript.com/mental-model-for-typescript-generics</guid>
            <pubDate>Mon, 09 Jan 2023 09:04:14 GMT</pubDate>
            <description><![CDATA[Learn how to use TypeScript generics to improve code readability, type safety, and reduce repetitive code.]]></description>
        </item>
        <item>
            <title><![CDATA[When should you use Zod? (article)]]></title>
            <link>https://www.totaltypescript.com/when-should-you-use-zod</link>
            <guid>https://www.totaltypescript.com/when-should-you-use-zod</guid>
            <pubDate>Sat, 07 Jan 2023 08:27:42 GMT</pubDate>
            <description><![CDATA[Use Zod to validate unknown inputs in your app, whether it's a CLI or a public API, to ensure that data entering your app is safe.]]></description>
        </item>
        <item>
            <title><![CDATA[Writing string.replace in TypeScript (article)]]></title>
            <link>https://www.totaltypescript.com/writing-string-replace-in-typescript</link>
            <guid>https://www.totaltypescript.com/writing-string-replace-in-typescript</guid>
            <pubDate>Mon, 12 Dec 2022 12:29:55 GMT</pubDate>
            <description><![CDATA[TypeScript's template literal syntax enables powerful string manipulation and transformation using unions, infer, and recursion.]]></description>
        </item>
        <item>
            <title><![CDATA[Rewriting TypeScript in Rust? You'd have to be... (article)]]></title>
            <link>https://www.totaltypescript.com/rewriting-typescript-in-rust</link>
            <guid>https://www.totaltypescript.com/rewriting-typescript-in-rust</guid>
            <pubDate>Mon, 12 Dec 2022 11:34:30 GMT</pubDate>
            <description><![CDATA[Donny (kdy1 on GitHub) is rewriting TypeScript in Rust hoping to speed up tsc which is slow due to its TypeScript base.]]></description>
        </item>
        <item>
            <title><![CDATA[Don't use Function type in TypeScript (article)]]></title>
            <link>https://www.totaltypescript.com/dont-use-function-keyword-in-typescript</link>
            <guid>https://www.totaltypescript.com/dont-use-function-keyword-in-typescript</guid>
            <pubDate>Mon, 12 Dec 2022 11:31:27 GMT</pubDate>
            <description><![CDATA[Learn why using `Function` as a function type is not recommended in TypeScript, and discover alternatives for expressing any function type.]]></description>
        </item>
        <item>
            <title><![CDATA[TypeScript Pro Essentials (workshop)]]></title>
            <link>https://www.totaltypescript.com/workshops/typescript-pro-essentials</link>
            <guid>https://www.totaltypescript.com/workshops/typescript-pro-essentials</guid>
            <pubDate>Mon, 08 Apr 2024 23:05:39 GMT</pubDate>
            <description><![CDATA[Learn TypeScript by setting up a pro environment, using advanced IDE features, and mastering type annotations, unions, object types, inference, and generics.]]></description>
        </item>
        <item>
            <title><![CDATA[Advanced React with TypeScript (workshop)]]></title>
            <link>https://www.totaltypescript.com/workshops/advanced-react-with-typescript</link>
            <guid>https://www.totaltypescript.com/workshops/advanced-react-with-typescript</guid>
            <pubDate>Thu, 06 Jul 2023 18:26:32 GMT</pubDate>
            <description><![CDATA[Expert-level knowledge for typing your React apps with TypeScript.]]></description>
        </item>
        <item>
            <title><![CDATA[Advanced TypeScript Patterns (workshop)]]></title>
            <link>https://www.totaltypescript.com/workshops/advanced-typescript-patterns</link>
            <guid>https://www.totaltypescript.com/workshops/advanced-typescript-patterns</guid>
            <pubDate>Mon, 28 Nov 2022 20:46:38 GMT</pubDate>
            <description><![CDATA[Intermediate to advanced workshop: Boost app logic, type global scopes, and debug with external libraries.]]></description>
        </item>
        <item>
            <title><![CDATA[TypeScript Generics (workshop)]]></title>
            <link>https://www.totaltypescript.com/workshops/typescript-generics</link>
            <guid>https://www.totaltypescript.com/workshops/typescript-generics</guid>
            <pubDate>Mon, 28 Nov 2022 20:38:15 GMT</pubDate>
            <description><![CDATA[Master TypeScript's generics with exercises from basics to advanced, including conditional types and currying.]]></description>
        </item>
        <item>
            <title><![CDATA[Type Transformations (workshop)]]></title>
            <link>https://www.totaltypescript.com/workshops/type-transformations</link>
            <guid>https://www.totaltypescript.com/workshops/type-transformations</guid>
            <pubDate>Tue, 01 Nov 2022 18:49:56 GMT</pubDate>
            <description><![CDATA[Learn to manipulate types for cleaner, maintainable code with over 50 hands-on exercises, from string manipulation to advanced unions and mapped types.]]></description>
        </item>
    </channel>
</rss>