<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Typescript on Dev &amp; Platform Engineering Hub</title><link>https://rhidayat.work/topics/typescript/</link><description>Recent content in Typescript on Dev &amp; Platform Engineering Hub</description><generator>Hugo -- gohugo.io</generator><language>en</language><copyright>© 2026 Rachmat Hidayat</copyright><lastBuildDate>Sun, 09 Aug 2026 16:40:00 +0000</lastBuildDate><atom:link href="https://rhidayat.work/topics/typescript/index.xml" rel="self" type="application/rss+xml"/><item><title>Pulumi Ep 15: Multi-Language Components (MLC)</title><link>https://rhidayat.work/series/pulumi/advanced/15-multi-language-components/</link><pubDate>Sun, 09 Aug 2026 16:40:00 +0000</pubDate><guid>https://rhidayat.work/series/pulumi/advanced/15-multi-language-components/</guid><description>In Episode 7, we built a reusable TypeScript ComponentResource. But what if the Data Science team wants to use your component in their Python IaC? Historically, they couldn&amp;rsquo;t. Pulumi Multi-Language Components (MLC) solves this by using gRPC to project your TypeScript code across all supported languages.</description></item><item><title>Pulumi Ep 14: Policy as Code with CrossGuard</title><link>https://rhidayat.work/series/pulumi/advanced/14-policy-as-code-with-crossguard/</link><pubDate>Sun, 09 Aug 2026 16:30:00 +0000</pubDate><guid>https://rhidayat.work/series/pulumi/advanced/14-policy-as-code-with-crossguard/</guid><description>In Terraform, enforcing security rules requires external tools like OPA (Open Policy Agent) and Rego. Pulumi provides a native Policy-as-Code engine called CrossGuard. In this episode, we will write TypeScript policies that act as a strict firewall, preventing developers from provisioning insecure infrastructure.</description></item><item><title>Pulumi Ep 13: Unit Testing Infrastructure (Jest)</title><link>https://rhidayat.work/series/pulumi/advanced/13-unit-testing-infrastructure/</link><pubDate>Sun, 09 Aug 2026 16:20:00 +0000</pubDate><guid>https://rhidayat.work/series/pulumi/advanced/13-unit-testing-infrastructure/</guid><description>Testing infrastructure usually means deploying it to a sandbox, waiting 15 minutes, running a bash script to ping an IP, and tearing it down. Because Pulumi is TypeScript, we can use the industry-standard Jest testing framework to write offline, millisecond unit tests to validate our infrastructure logic &lt;em&gt;before&lt;/em&gt; we ever touch the cloud.</description></item><item><title>Pulumi Ep 12: Authoring Dynamic Providers</title><link>https://rhidayat.work/series/pulumi/advanced/12-dynamic-providers/</link><pubDate>Sun, 09 Aug 2026 16:10:00 +0000</pubDate><guid>https://rhidayat.work/series/pulumi/advanced/12-dynamic-providers/</guid><description>What happens when you need to provision a resource in a system that doesn&amp;rsquo;t have an official Pulumi plugin? In Terraform, you must write complex Go code, compile a binary, and distribute it. In Pulumi, you can author a Dynamic Provider directly in your &lt;code&gt;index.ts&lt;/code&gt; file using pure TypeScript.</description></item><item><title>Pulumi Ep 11: The Automation API (Embedded Pulumi)</title><link>https://rhidayat.work/series/pulumi/advanced/11-automation-api/</link><pubDate>Sun, 09 Aug 2026 16:00:00 +0000</pubDate><guid>https://rhidayat.work/series/pulumi/advanced/11-automation-api/</guid><description>Running &lt;code&gt;pulumi up&lt;/code&gt; from a CLI is great for Platform Engineers, but what if you want to build a self-service Internal Developer Portal (IDP) where developers click a button on a web page to provision a database? The Pulumi Automation API allows you to embed the entire Pulumi Engine inside your own Node.js, Python, or Go applications.</description></item><item><title>TS Ep 70: Building a REST API with Effect</title><link>https://rhidayat.work/series/typescript/functional-effect/15-building-a-rest-api-with-effect/</link><pubDate>Sun, 09 Aug 2026 15:55:00 +0000</pubDate><guid>https://rhidayat.work/series/typescript/functional-effect/15-building-a-rest-api-with-effect/</guid><description>We assemble the ultimate functional backend. Learn how to combine Layers, Context, Schema Validation, Error Handling, and Resource Management into a massive, production-grade Express REST API using @effect/platform.</description></item><item><title>TS Ep 69: Managing Resources and Scope</title><link>https://rhidayat.work/series/typescript/functional-effect/14-resource-management-acquire-release/</link><pubDate>Sun, 09 Aug 2026 15:50:00 +0000</pubDate><guid>https://rhidayat.work/series/typescript/functional-effect/14-resource-management-acquire-release/</guid><description>Learn how to safely acquire and release resources like database connections and file streams. The Scope API replaces try/finally blocks, guaranteeing cleanup even if your application crashes.</description></item><item><title>TS Ep 68: Effect Schema Validation</title><link>https://rhidayat.work/series/typescript/functional-effect/13-effect-schema-validation/</link><pubDate>Sun, 09 Aug 2026 15:45:00 +0000</pubDate><guid>https://rhidayat.work/series/typescript/functional-effect/13-effect-schema-validation/</guid><description>TypeScript interfaces do not exist at runtime. To protect your application from malformed API payloads and corrupted database rows, learn how to use @effect/schema to parse and validate data perfectly.</description></item><item><title>Pulumi Ep 10: Using Native Providers (AWS Classic vs AWS Native)</title><link>https://rhidayat.work/series/pulumi/intermediate/10-using-native-providers/</link><pubDate>Sun, 09 Aug 2026 15:40:00 +0000</pubDate><guid>https://rhidayat.work/series/pulumi/intermediate/10-using-native-providers/</guid><description>Did you know that the &lt;code&gt;@pulumi/aws&lt;/code&gt; package you have been using is actually built on top of Terraform? In this final intermediate episode, we explore the difference between &amp;lsquo;Bridged&amp;rsquo; providers and &amp;lsquo;Native&amp;rsquo; providers, and learn how &lt;code&gt;@pulumi/aws-native&lt;/code&gt; directly communicates with the AWS Cloud Control API.</description></item><item><title>TS Ep 67: Concurrency and Fibers</title><link>https://rhidayat.work/series/typescript/functional-effect/12-concurrency-and-fibers/</link><pubDate>Sun, 09 Aug 2026 15:40:00 +0000</pubDate><guid>https://rhidayat.work/series/typescript/functional-effect/12-concurrency-and-fibers/</guid><description>Learn how Effect-TS implements Fibers (green threads) to allow millions of concurrent operations. Master &lt;code&gt;Effect.all&lt;/code&gt;, concurrency limits, and safe interruption of background tasks.</description></item><item><title>TS Ep 66: Layers &amp; Service Wiring</title><link>https://rhidayat.work/series/typescript/functional-effect/11-layers-and-service-wiring/</link><pubDate>Sun, 09 Aug 2026 15:35:00 +0000</pubDate><guid>https://rhidayat.work/series/typescript/functional-effect/11-layers-and-service-wiring/</guid><description>Providing single services is easy, but enterprise applications have massive dependency graphs. Learn how to use Effect Layers to wire services together, handle async initialization, and resolve graphs perfectly.</description></item><item><title>Pulumi Ep 9: Pulumi Packages and the Registry</title><link>https://rhidayat.work/series/pulumi/intermediate/09-pulumi-packages-and-registry/</link><pubDate>Sun, 09 Aug 2026 15:30:00 +0000</pubDate><guid>https://rhidayat.work/series/pulumi/intermediate/09-pulumi-packages-and-registry/</guid><description>Platform Engineering is rarely confined to a single cloud. You often need to provision AWS servers, configure GitHub repositories, and set up DataDog dashboards simultaneously. In this episode, we learn how to leverage the Pulumi Registry to install third-party Providers and orchestrate multi-cloud deployments from a single TypeScript file.</description></item><item><title>TS Ep 65: Context &amp; Dependency Injection</title><link>https://rhidayat.work/series/typescript/functional-effect/10-context-and-dependency-injection/</link><pubDate>Sun, 09 Aug 2026 15:30:00 +0000</pubDate><guid>https://rhidayat.work/series/typescript/functional-effect/10-context-and-dependency-injection/</guid><description>Eliminate global singletons and complex IoC containers. Learn how the R parameter in Effect&amp;lt;A, E, R&amp;gt; forces you to provide dependencies before your program can run, ensuring perfect testability.</description></item><item><title>TS Ep 64: Error Handling in Effect</title><link>https://rhidayat.work/series/typescript/functional-effect/09-error-handling-in-effect/</link><pubDate>Sun, 09 Aug 2026 15:25:00 +0000</pubDate><guid>https://rhidayat.work/series/typescript/functional-effect/09-error-handling-in-effect/</guid><description>Effect-TS completely reimagines error handling. Learn the difference between Expected Failures and Unexpected Defects, and how to use &lt;code&gt;catchTag&lt;/code&gt; to build resilient, self-documenting pipelines.</description></item><item><title>Pulumi Ep 8: Cross-Stack References (Micro-Stacks)</title><link>https://rhidayat.work/series/pulumi/intermediate/08-cross-stack-references/</link><pubDate>Sun, 09 Aug 2026 15:20:00 +0000</pubDate><guid>https://rhidayat.work/series/pulumi/intermediate/08-cross-stack-references/</guid><description>Deploying your entire infrastructure (Networking, Databases, Kubernetes, and Frontend) in a single Pulumi stack is dangerous. A tiny typo in an S3 bucket configuration could accidentally trigger the destruction of your VPC. In this episode, we learn how to architect Micro-Stacks and stitch them together using StackReference.</description></item><item><title>TS Ep 63: Creating and Running Effects</title><link>https://rhidayat.work/series/typescript/functional-effect/08-creating-and-running-effects/</link><pubDate>Sun, 09 Aug 2026 15:20:00 +0000</pubDate><guid>https://rhidayat.work/series/typescript/functional-effect/08-creating-and-running-effects/</guid><description>To use Effect-TS, you must know how to bridge the gap between the chaotic outside world and your pure functional pipeline. Master the constructors and execution methods of the Effect runtime.</description></item><item><title>TS Ep 62: The Effect Type Signature</title><link>https://rhidayat.work/series/typescript/functional-effect/07-effect-type-signature/</link><pubDate>Sun, 09 Aug 2026 15:15:00 +0000</pubDate><guid>https://rhidayat.work/series/typescript/functional-effect/07-effect-type-signature/</guid><description>The heart of Effect-TS is its three-parameter type signature. Master the A (Success), E (Error), and R (Requirement) parameters to unlock perfect architectural safety.</description></item><item><title>Pulumi Ep 7: Abstraction with ComponentResources</title><link>https://rhidayat.work/series/pulumi/intermediate/07-abstraction-with-componentresources/</link><pubDate>Sun, 09 Aug 2026 15:10:00 +0000</pubDate><guid>https://rhidayat.work/series/pulumi/intermediate/07-abstraction-with-componentresources/</guid><description>Terraform relies on Modules for abstraction, which are essentially isolated directories of HCL files. Pulumi takes a much more elegant approach. Because we are using a real programming language, we can abstract complex architectures into reusable TypeScript Classes called ComponentResources.</description></item><item><title>TS Ep 61: Introduction to Effect-TS</title><link>https://rhidayat.work/series/typescript/functional-effect/06-introduction-to-effect-ts/</link><pubDate>Sun, 09 Aug 2026 15:10:00 +0000</pubDate><guid>https://rhidayat.work/series/typescript/functional-effect/06-introduction-to-effect-ts/</guid><description>We have built the functional foundation. Now it is time to enter the ecosystem. Discover why Effect-TS is rapidly becoming the standard library for enterprise TypeScript, and run your first pure asynchronous program.</description></item><item><title>TS Ep 60: Function Composition (Pipe &amp; Flow)</title><link>https://rhidayat.work/series/typescript/functional-effect/05-function-composition-pipe-flow/</link><pubDate>Sun, 09 Aug 2026 15:05:00 +0000</pubDate><guid>https://rhidayat.work/series/typescript/functional-effect/05-function-composition-pipe-flow/</guid><description>Learn how to avoid the &amp;lsquo;Pyramid of Doom&amp;rsquo; and method chaining limitations by embracing functional composition. We explore how &lt;code&gt;pipe&lt;/code&gt; and &lt;code&gt;flow&lt;/code&gt; allow you to build complex logic from small, testable pure functions.</description></item><item><title>Pulumi Ep 6: Loops and Conditional Infrastructure</title><link>https://rhidayat.work/series/pulumi/intermediate/06-loops-and-conditional-infrastructure/</link><pubDate>Sun, 09 Aug 2026 15:00:00 +0000</pubDate><guid>https://rhidayat.work/series/pulumi/intermediate/06-loops-and-conditional-infrastructure/</guid><description>Welcome to the Intermediate Tier. The true advantage of using a general-purpose programming language for IaC is access to native control flow. In this episode, we will dynamically generate Subnets and Security Group rules using native array mapping and conditional logic based on environment flags.</description></item><item><title>TS Ep 59: Monadic Patterns (Option &amp; Either)</title><link>https://rhidayat.work/series/typescript/functional-effect/04-monadic-patterns-option-either/</link><pubDate>Sun, 09 Aug 2026 15:00:00 +0000</pubDate><guid>https://rhidayat.work/series/typescript/functional-effect/04-monadic-patterns-option-either/</guid><description>Learn how to wrap missing data and expected errors in type-safe containers. We explore the Option and Either monads, providing the final foundational step before entering the Effect-TS ecosystem.</description></item><item><title>TS Ep 58: Algebraic Data Types (ADTs)</title><link>https://rhidayat.work/series/typescript/functional-effect/03-algebraic-data-types-adt/</link><pubDate>Sun, 09 Aug 2026 14:55:00 +0000</pubDate><guid>https://rhidayat.work/series/typescript/functional-effect/03-algebraic-data-types-adt/</guid><description>Learn how to eliminate impossible states from your application by mastering Algebraic Data Types (ADTs). We explore Sum Types, Product Types, and exhaustive pattern matching in TypeScript.</description></item><item><title>Pulumi Ep 5: Inputs, Outputs, and Promises (The Asynchronous Conundrum)</title><link>https://rhidayat.work/series/pulumi/fundamental/05-inputs-outputs-and-promises/</link><pubDate>Sun, 09 Aug 2026 14:50:00 +0000</pubDate><guid>https://rhidayat.work/series/pulumi/fundamental/05-inputs-outputs-and-promises/</guid><description>When you write standard TypeScript, data is computed immediately. But in Pulumi, when you request an EC2 instance&amp;rsquo;s IP address, the IP does not exist until AWS physically boots the server. This introduces temporal paradoxes. In this final fundamental episode, we master Inputs, Outputs, and how to safely manipulate asynchronous infrastructure data.</description></item><item><title>TS Ep 57: Immutability &amp; Readonly Data</title><link>https://rhidayat.work/series/typescript/functional-effect/02-immutability-and-readonly-data/</link><pubDate>Sun, 09 Aug 2026 14:50:00 +0000</pubDate><guid>https://rhidayat.work/series/typescript/functional-effect/02-immutability-and-readonly-data/</guid><description>Functional programming requires data to be immutable. Discover how to leverage TypeScript&amp;rsquo;s structural typing, &lt;code&gt;Readonly&amp;lt;T&amp;gt;&lt;/code&gt;, and &lt;code&gt;as const&lt;/code&gt; to enforce deep immutability at compile time, eliminating a massive category of state-based bugs.</description></item><item><title>TS Ep 56: Functional Programming Basics &amp; Pure Functions</title><link>https://rhidayat.work/series/typescript/functional-effect/01-functional-programming-basics-pure-functions/</link><pubDate>Sun, 09 Aug 2026 14:45:00 +0000</pubDate><guid>https://rhidayat.work/series/typescript/functional-effect/01-functional-programming-basics-pure-functions/</guid><description>Welcome to the final module! Before diving into Effect-TS, we must build a foundation in Functional Programming. Learn why pure functions eliminate whole classes of bugs, how separating descriptions from execution powers the Effect runtime, and how to refactor impure services into highly testable functional pipelines.</description></item><item><title>TS Ep 24: The Polymorphic `this` Type &amp; Fluent APIs</title><link>https://rhidayat.work/series/typescript/classes-and-oop/09-the-this-type/</link><pubDate>Sun, 09 Aug 2026 14:40:00 +0000</pubDate><guid>https://rhidayat.work/series/typescript/classes-and-oop/09-the-this-type/</guid><description>An in-depth analysis of the polymorphic &lt;code&gt;this&lt;/code&gt; type in TypeScript. Learn how returning &lt;code&gt;: this&lt;/code&gt; preserves subclass type identities during method chaining, build type-safe Fluent Builder APIs, and use explicit &lt;code&gt;this&lt;/code&gt; parameters for callback binding safety.</description></item><item><title>TS Ep 23: Static Members, Static Blocks, and Singletons</title><link>https://rhidayat.work/series/typescript/classes-and-oop/08-static-members/</link><pubDate>Sun, 09 Aug 2026 14:35:00 +0000</pubDate><guid>https://rhidayat.work/series/typescript/classes-and-oop/08-static-members/</guid><description>An in-depth analysis of static class members in TypeScript. Learn how static properties attach to constructor functions, static access control, static blocks (&lt;code&gt;static {}&lt;/code&gt;), static inheritance, and implementing the Singleton Pattern using private constructors.</description></item><item><title>Pulumi Ep 3: Declaring Resources in TypeScript</title><link>https://rhidayat.work/series/pulumi/fundamental/03-declaring-resources-in-typescript/</link><pubDate>Sun, 09 Aug 2026 14:30:00 +0000</pubDate><guid>https://rhidayat.work/series/pulumi/fundamental/03-declaring-resources-in-typescript/</guid><description>In Terraform, you write declarative configuration blocks. In Pulumi, you instantiate Object-Oriented classes. This episode explores how to declare complex resources like an AWS VPC, Security Group, and EC2 instance using pure TypeScript, while leveraging your IDE&amp;rsquo;s IntelliSense for maximum productivity.</description></item><item><title>TS Ep 22: Abstract Classes &amp; Template Method Pattern</title><link>https://rhidayat.work/series/typescript/classes-and-oop/07-abstract-classes/</link><pubDate>Sun, 09 Aug 2026 14:30:00 +0000</pubDate><guid>https://rhidayat.work/series/typescript/classes-and-oop/07-abstract-classes/</guid><description>An in-depth guide to Abstract Classes in TypeScript. Learn how &lt;code&gt;abstract class&lt;/code&gt; prevents direct instantiation, enforcing method implementation contracts on subclasses while sharing concrete base logic using the Template Method design pattern.</description></item><item><title>TS Ep 21: Class Inheritance, `super()`, and the `override` Keyword</title><link>https://rhidayat.work/series/typescript/classes-and-oop/06-inheritance-and-super/</link><pubDate>Sun, 09 Aug 2026 14:25:00 +0000</pubDate><guid>https://rhidayat.work/series/typescript/classes-and-oop/06-inheritance-and-super/</guid><description>An in-depth exploration of class inheritance in TypeScript. Learn how &lt;code&gt;extends&lt;/code&gt; establishes prototypal chain linkages, &lt;code&gt;super()&lt;/code&gt; constructor constraints, method overriding with &lt;code&gt;super.method()&lt;/code&gt;, and using TypeScript 4.3+ &lt;code&gt;override&lt;/code&gt; modifier to prevent silent refactoring bugs.</description></item><item><title>TS Ep 20: Implementing Interfaces (`implements` Keyword)</title><link>https://rhidayat.work/series/typescript/classes-and-oop/05-implements-interfaces/</link><pubDate>Sun, 09 Aug 2026 14:20:00 +0000</pubDate><guid>https://rhidayat.work/series/typescript/classes-and-oop/05-implements-interfaces/</guid><description>An in-depth analysis of interface implementation in TypeScript. Learn how &lt;code&gt;implements&lt;/code&gt; validates class structure, why &lt;code&gt;implements&lt;/code&gt; does not infer method parameter types automatically, implementing multiple interfaces, and public contract enforcement.</description></item><item><title>TS Ep 19: Getters, Setters, and Asymmetric Accessors</title><link>https://rhidayat.work/series/typescript/classes-and-oop/04-getters-and-setters/</link><pubDate>Sun, 09 Aug 2026 14:15:00 +0000</pubDate><guid>https://rhidayat.work/series/typescript/classes-and-oop/04-getters-and-setters/</guid><description>An in-depth analysis of class accessors in TypeScript. Learn how &lt;code&gt;get&lt;/code&gt; and &lt;code&gt;set&lt;/code&gt; intercept reading and writing, computed properties, backing field naming patterns, and TypeScript 4.3+ Asymmetric Accessor Types.</description></item><item><title>Pulumi Ep 1: Introduction to Pulumi and Project Initialization</title><link>https://rhidayat.work/series/pulumi/fundamental/01-introduction-to-pulumi/</link><pubDate>Sun, 09 Aug 2026 14:10:00 +0000</pubDate><guid>https://rhidayat.work/series/pulumi/fundamental/01-introduction-to-pulumi/</guid><description>It is time to leave YAML behind. In this episode, we will install the Pulumi CLI, scaffold a brand new TypeScript project, and understand the anatomy of the generated files. You will learn how Pulumi securely integrates with your cloud provider credentials.</description></item><item><title>TS Ep 18: Parameter Properties — Concise Class Initializations</title><link>https://rhidayat.work/series/typescript/classes-and-oop/03-parameter-properties/</link><pubDate>Sun, 09 Aug 2026 14:10:00 +0000</pubDate><guid>https://rhidayat.work/series/typescript/classes-and-oop/03-parameter-properties/</guid><description>Learn how TypeScript parameter properties compress field declarations, constructor parameter typing, and &lt;code&gt;this&lt;/code&gt; assignments into one line. Understand compilation behavior, inheritance interaction with super(), and common duplicate identifier gotchas.</description></item><item><title>TS Ep 17: Access Modifiers &amp; Hard Private Fields (#)</title><link>https://rhidayat.work/series/typescript/classes-and-oop/02-access-modifiers-public-private-protected/</link><pubDate>Sun, 09 Aug 2026 14:05:00 +0000</pubDate><guid>https://rhidayat.work/series/typescript/classes-and-oop/02-access-modifiers-public-private-protected/</guid><description>An in-depth analysis of class encapsulation. Understand the visibility matrix of public, private, and protected modifiers, inheritance rules in subclasses, compile-time type erasure, and how ES2022 hard private fields (&lt;code&gt;#&lt;/code&gt;) provide true runtime isolation.</description></item><item><title>TS Ep 16: Class Basics, Field Declarations, and Constructors</title><link>https://rhidayat.work/series/typescript/classes-and-oop/01-class-basics-and-constructors/</link><pubDate>Sun, 09 Aug 2026 14:00:00 +0000</pubDate><guid>https://rhidayat.work/series/typescript/classes-and-oop/01-class-basics-and-constructors/</guid><description>An in-depth guide to TypeScript classes. Learn how field declarations differ from standard ES6 JavaScript, how strictPropertyInitialization eliminates uninitialized field bugs, readonly class fields, and the Definite Assignment Assertion operator (&lt;code&gt;!&lt;/code&gt;).</description></item><item><title>TS Ep 4: Functional TypeScript &amp; Effect-TS Prelude — Immutability, ADTs, and Type-Driven Error Handling</title><link>https://rhidayat.work/series/typescript/functional-effect/04-functional-typescript-and-effect-foundation/</link><pubDate>Sun, 09 Aug 2026 14:00:00 +0000</pubDate><guid>https://rhidayat.work/series/typescript/functional-effect/04-functional-typescript-and-effect-foundation/</guid><description>The functional programming masterclass for TypeScript developers. Bridge object-oriented patterns into pure functional architecture with Option/Either types, typed error handling without throw exceptions, pipe/flow composition, and an introduction to the Effect-TS ecosystem.</description></item><item><title>TS Ep 55: Advanced Function Composition</title><link>https://rhidayat.work/series/typescript/advanced/15-advanced-function-composition-typing/</link><pubDate>Sun, 09 Aug 2026 13:45:00 +0000</pubDate><guid>https://rhidayat.work/series/typescript/advanced/15-advanced-function-composition-typing/</guid><description>How do you type a pipe() function that takes an infinite number of functions, where the output of function A must perfectly match the input of function B? Welcome to the final boss of TypeScript.</description></item><item><title>TS Ep 54: The Builder Pattern with Generics</title><link>https://rhidayat.work/series/typescript/advanced/14-builder-pattern-with-generics/</link><pubDate>Sun, 09 Aug 2026 13:40:00 +0000</pubDate><guid>https://rhidayat.work/series/typescript/advanced/14-builder-pattern-with-generics/</guid><description>Learn how to build chainable APIs that accumulate type knowledge at every step. This Generic Accumulator pattern is the secret engine powering libraries like tRPC, Zod, and Prisma, providing unparalleled autocomplete.</description></item><item><title>TS Ep 53: Branding and Flavoring (Nominal Typing)</title><link>https://rhidayat.work/series/typescript/advanced/13-branding-and-flavoring-nominal-typing/</link><pubDate>Sun, 09 Aug 2026 13:35:00 +0000</pubDate><guid>https://rhidayat.work/series/typescript/advanced/13-branding-and-flavoring-nominal-typing/</guid><description>TypeScript doesn&amp;rsquo;t care if two types have different names; if they share the same shape, they are equivalent. Learn how to use Branding and Flavoring to force the compiler to differentiate between an OrderID string and a UserID string, powering Domain-Driven Design.</description></item><item><title>TS Ep 3: Advanced TypeScript — Conditional Types, Infer Keyword, and Template Literal Metaprogramming</title><link>https://rhidayat.work/series/typescript/advanced/03-conditional-types-infer-and-template-literals/</link><pubDate>Sun, 09 Aug 2026 13:30:00 +0000</pubDate><guid>https://rhidayat.work/series/typescript/advanced/03-conditional-types-infer-and-template-literals/</guid><description>An advanced masterclass in TypeScript type-level metaprogramming. Master conditional types (T extends U ? X : Y), distributive behavior, infer keyword pattern matching for unwrapping types, template literal types (${T}_${U}), and deep recursive object transformations.</description></item><item><title>TS Ep 52: Variance (Covariance vs Contravariance)</title><link>https://rhidayat.work/series/typescript/advanced/12-variance-covariance-contravariance/</link><pubDate>Sun, 09 Aug 2026 13:30:00 +0000</pubDate><guid>https://rhidayat.work/series/typescript/advanced/12-variance-covariance-contravariance/</guid><description>Why is it safe to return a subclass instead of a superclass, but dangerous to accept a superclass parameter instead of a subclass? Welcome to Variance: the computer science underpinning of TypeScript&amp;rsquo;s assignability engine.</description></item><item><title>TS Ep 51: Type-Level State Machines</title><link>https://rhidayat.work/series/typescript/advanced/11-type-level-state-machines/</link><pubDate>Sun, 09 Aug 2026 13:25:00 +0000</pubDate><guid>https://rhidayat.work/series/typescript/advanced/11-type-level-state-machines/</guid><description>Use mapped types and generics to enforce finite state transitions in the compiler. A type-level state machine makes impossible states impossible to represent, eliminating entire classes of runtime bugs.</description></item><item><title>TS Ep 50: DeepReadonly and DeepPartial</title><link>https://rhidayat.work/series/typescript/advanced/10-deep-readonly-and-deep-partial/</link><pubDate>Sun, 09 Aug 2026 13:20:00 +0000</pubDate><guid>https://rhidayat.work/series/typescript/advanced/10-deep-readonly-and-deep-partial/</guid><description>The built-in &lt;code&gt;Partial&lt;/code&gt; and &lt;code&gt;Readonly&lt;/code&gt; utilities are shallow. Learn how to write your own &lt;code&gt;DeepReadonly&lt;/code&gt; and &lt;code&gt;DeepPartial&lt;/code&gt; utilities that penetrate every layer of nested objects by combining Generics, Conditionals, &lt;code&gt;infer&lt;/code&gt;, Mapped Types, and Recursion simultaneously.</description></item><item><title>TS Ep 49: Recursive Types</title><link>https://rhidayat.work/series/typescript/advanced/09-recursive-types/</link><pubDate>Sun, 09 Aug 2026 13:15:00 +0000</pubDate><guid>https://rhidayat.work/series/typescript/advanced/09-recursive-types/</guid><description>&lt;div class="lead text-neutral-500 dark:text-neutral-400 !mb-9 text-xl"&gt;
 How do you type a JSON object? A JSON object can contain arrays of objects, which can contain arrays of objects, infinitely down. You cannot hardcode this depth. You need a &lt;strong&gt;Recursive Type&lt;/strong&gt;.
&lt;/div&gt;</description></item><item><title>TS Ep 48: String Manipulation Utilities</title><link>https://rhidayat.work/series/typescript/advanced/08-string-manipulation-utilities/</link><pubDate>Sun, 09 Aug 2026 13:10:00 +0000</pubDate><guid>https://rhidayat.work/series/typescript/advanced/08-string-manipulation-utilities/</guid><description>TypeScript provides four built-in Intrinsic utilities that manipulate the casing of string literal types at compile time. Learn how to pair them with template literals and mapped types to dynamically generate robust event handler mappings.</description></item><item><title>TS Ep 47: Template Literal Types</title><link>https://rhidayat.work/series/typescript/advanced/07-template-literal-types/</link><pubDate>Sun, 09 Aug 2026 13:05:00 +0000</pubDate><guid>https://rhidayat.work/series/typescript/advanced/07-template-literal-types/</guid><description>Template literal types allow you to use JavaScript-style template strings (&lt;code&gt;${...}&lt;/code&gt;) inside Type Space. Learn how to generate combinations of string literals automatically via Union Permutation, and parse delimited strings (like emails or URLs) using the &lt;code&gt;infer&lt;/code&gt; keyword.</description></item><item><title>TS Ep 2: Intermediate TypeScript — Generics, Type Helpers, and Mapped Types</title><link>https://rhidayat.work/series/typescript/intermediate/02-type-transformations-and-generics/</link><pubDate>Sun, 09 Aug 2026 13:00:00 +0000</pubDate><guid>https://rhidayat.work/series/typescript/intermediate/02-type-transformations-and-generics/</guid><description>An in-depth guide to intermediate TypeScript type transformations. Master generic functions and constraints (extends), indexed access types, keyof/typeof operators, built-in helpers (Pick, Omit, Record, ReturnType), and mapped type transformations.</description></item><item><title>TS Ep 46: Inferring Tuples and Arrays</title><link>https://rhidayat.work/series/typescript/advanced/06-infer-with-tuples-and-arrays/</link><pubDate>Sun, 09 Aug 2026 13:00:00 +0000</pubDate><guid>https://rhidayat.work/series/typescript/advanced/06-infer-with-tuples-and-arrays/</guid><description>Pattern matching with &lt;code&gt;infer&lt;/code&gt; isn&amp;rsquo;t just for Promises and Objects. You can deconstruct Tuples and Arrays element by element in Type Space, mirroring the exact syntax of JavaScript&amp;rsquo;s array destructuring and spread operators.</description></item><item><title>TS Ep 45: Inferring Promises (`Awaited`)</title><link>https://rhidayat.work/series/typescript/advanced/05-infer-with-promises-awaited/</link><pubDate>Sun, 09 Aug 2026 12:55:00 +0000</pubDate><guid>https://rhidayat.work/series/typescript/advanced/05-infer-with-promises-awaited/</guid><description>Learn how the built-in &lt;code&gt;Awaited&amp;lt;T&amp;gt;&lt;/code&gt; utility models the runtime &lt;code&gt;await&lt;/code&gt; keyword. We explore how to combine the &lt;code&gt;infer&lt;/code&gt; keyword with Recursive Type Aliases to drill down and unwrap Promises infinitely deep, and how to compose it with &lt;code&gt;ReturnType&lt;/code&gt; for async functions.</description></item><item><title>TS Ep 44: The `infer` Keyword (Pattern Matching)</title><link>https://rhidayat.work/series/typescript/advanced/04-the-infer-keyword/</link><pubDate>Sun, 09 Aug 2026 12:50:00 +0000</pubDate><guid>https://rhidayat.work/series/typescript/advanced/04-the-infer-keyword/</guid><description>If conditional types are the if-else statements of Type Space, the &lt;code&gt;infer&lt;/code&gt; keyword is the variable declaration (&lt;code&gt;let x = ...&lt;/code&gt;). Learn how to extract types dynamically via pattern matching, rebuild &lt;code&gt;ReturnType&lt;/code&gt;, and parse Template Literal Strings at compile time.</description></item><item><title>TS Ep 43: Preventing Distribution (Tuples)</title><link>https://rhidayat.work/series/typescript/advanced/03-preventing-distribution/</link><pubDate>Sun, 09 Aug 2026 12:45:00 +0000</pubDate><guid>https://rhidayat.work/series/typescript/advanced/03-preventing-distribution/</guid><description>Sometimes, you want a conditional type to evaluate an entire Union as a single monolithic entity, rather than mapping over its individual members. Learn how wrapping generic parameters in brackets &lt;code&gt;[T]&lt;/code&gt; prevents distribution, and how to use this mechanic to build complex &lt;code&gt;IsUnion&lt;/code&gt; checks.</description></item><item><title>TS Ep 42: Distributive Conditional Types</title><link>https://rhidayat.work/series/typescript/advanced/02-distributive-conditional-types/</link><pubDate>Sun, 09 Aug 2026 12:40:00 +0000</pubDate><guid>https://rhidayat.work/series/typescript/advanced/02-distributive-conditional-types/</guid><description>When you pass a Union type into a conditional type, TypeScript doesn&amp;rsquo;t evaluate the union as a whole. It evaluates every single member of the union separately, and combines the results. Learn how this powerful (and sometimes confusing) mechanism powers TypeScript&amp;rsquo;s standard library.</description></item><item><title>TS Ep 41: Conditional Types (The Basics)</title><link>https://rhidayat.work/series/typescript/advanced/01-conditional-types-basics/</link><pubDate>Sun, 09 Aug 2026 12:35:00 +0000</pubDate><guid>https://rhidayat.work/series/typescript/advanced/01-conditional-types-basics/</guid><description>Conditional types are the if-else statements of Type Space. Learn how to use the &amp;rsquo;extends ? :&amp;rsquo; syntax to compute dynamic types based on assignability logic, replace complex function overloads, and construct nested else-if type chains.</description></item><item><title>TS Ep 1: Fundamental TypeScript — Inference, Type Narrowing, and Discriminated Unions</title><link>https://rhidayat.work/series/typescript/fundamental/01-typescript-fundamentals-and-narrowing/</link><pubDate>Sun, 09 Aug 2026 12:30:00 +0000</pubDate><guid>https://rhidayat.work/series/typescript/fundamental/01-typescript-fundamentals-and-narrowing/</guid><description>The foundational guide to mastering TypeScript. Learn how the type inference engine works, master type narrowing with typeof, instanceof, in, and custom type predicates (is), build type-safe discriminated unions, and use as const assertions.</description></item><item><title>TS Ep 40: Key Remapping with `as`</title><link>https://rhidayat.work/series/typescript/intermediate/16-key-remapping-with-as/</link><pubDate>Sun, 09 Aug 2026 12:30:00 +0000</pubDate><guid>https://rhidayat.work/series/typescript/intermediate/16-key-remapping-with-as/</guid><description>Take your Mapped Types to the absolute limit. Learn how to compute entirely new string names for keys on the fly using Template Literal Types, and discover how to completely filter out properties by returning &lt;code&gt;never&lt;/code&gt; during key mapping.</description></item><item><title>TS Ep 39: Mapped Type Modifiers (`+`, `-`, `?`, `readonly`)</title><link>https://rhidayat.work/series/typescript/intermediate/15-mapped-types-modifiers/</link><pubDate>Sun, 09 Aug 2026 12:25:00 +0000</pubDate><guid>https://rhidayat.work/series/typescript/intermediate/15-mapped-types-modifiers/</guid><description>An in-depth guide to Mapped Type Modifiers in TypeScript. Learn how to preserve, add (&lt;code&gt;+&lt;/code&gt;), or strip (&lt;code&gt;-&lt;/code&gt;) property modifiers like &lt;code&gt;readonly&lt;/code&gt; and &lt;code&gt;?&lt;/code&gt;. We explore how these mapping modifiers power TypeScript&amp;rsquo;s built-in &lt;code&gt;Partial&lt;/code&gt;, &lt;code&gt;Required&lt;/code&gt;, and &lt;code&gt;Readonly&lt;/code&gt; utility types.</description></item><item><title>TS Ep 38: Mapped Types (Basics)</title><link>https://rhidayat.work/series/typescript/intermediate/14-mapped-types-basics/</link><pubDate>Sun, 09 Aug 2026 12:20:00 +0000</pubDate><guid>https://rhidayat.work/series/typescript/intermediate/14-mapped-types-basics/</guid><description>An in-depth guide to Mapped Types in TypeScript. Learn how to use the &lt;code&gt;[K in Union]&lt;/code&gt; syntax to iterate over literal unions, transform existing object properties using &lt;code&gt;keyof&lt;/code&gt; and Indexed Access, and build strict state validation maps that perfectly mirror domain models.</description></item><item><title>TS Ep 37: Built-in Utility Types (`ReturnType` &amp; `Parameters`)</title><link>https://rhidayat.work/series/typescript/intermediate/13-utility-type-returntype-parameters/</link><pubDate>Sun, 09 Aug 2026 12:15:00 +0000</pubDate><guid>https://rhidayat.work/series/typescript/intermediate/13-utility-type-returntype-parameters/</guid><description>An in-depth guide to &lt;code&gt;ReturnType&amp;lt;T&amp;gt;&lt;/code&gt; and &lt;code&gt;Parameters&amp;lt;T&amp;gt;&lt;/code&gt;. Learn how to reverse-engineer third-party library functions, the requirement of &lt;code&gt;typeof&lt;/code&gt;, tuple indexing to extract specific arguments, and the underlying &lt;code&gt;infer&lt;/code&gt; keyword mechanics powering these utilities.</description></item><item><title>TS Ep 36: Built-in Utility Types (`Extract` and `Exclude`)</title><link>https://rhidayat.work/series/typescript/intermediate/12-utility-type-extract-exclude/</link><pubDate>Sun, 09 Aug 2026 12:10:00 +0000</pubDate><guid>https://rhidayat.work/series/typescript/intermediate/12-utility-type-extract-exclude/</guid><description>An in-depth guide to the &lt;code&gt;Extract&lt;/code&gt; and &lt;code&gt;Exclude&lt;/code&gt; utility types. Understand the fundamental difference between Object manipulation (&lt;code&gt;Pick&lt;/code&gt;/&lt;code&gt;Omit&lt;/code&gt;) and Union manipulation (&lt;code&gt;Extract&lt;/code&gt;/&lt;code&gt;Exclude&lt;/code&gt;), extracting by object signature in discriminated unions, and their underlying distributive conditional type mechanics.</description></item><item><title>TS Ep 35: Built-in Utility Types (`Record&lt;K, V&gt;`)</title><link>https://rhidayat.work/series/typescript/intermediate/11-utility-type-record/</link><pubDate>Sun, 09 Aug 2026 12:05:00 +0000</pubDate><guid>https://rhidayat.work/series/typescript/intermediate/11-utility-type-record/</guid><description>An in-depth look at the &lt;code&gt;Record&amp;lt;K, V&amp;gt;&lt;/code&gt; utility type. Learn how to type arbitrary string dictionaries, enforce exhaustive key mapping using Unions, and combine &lt;code&gt;Record&lt;/code&gt; with other utilities to model complex domain configurations.</description></item><item><title>Mastering TypeScript: From Fundamentals to Type-Level Programming &amp; Functional Effect-TS</title><link>https://rhidayat.work/series/typescript/</link><pubDate>Sun, 09 Aug 2026 12:00:00 +0000</pubDate><guid>https://rhidayat.work/series/typescript/</guid><description>The ultimate TypeScript masterclass roadmap. Master primitive types, type narrowing, generics, mapped types, conditional types, infer keyword, template literal types, type-level state machines, and functional Effect-TS architecture.</description></item><item><title>TS Ep 34: Built-in Utility Types (`Pick` and `Omit`)</title><link>https://rhidayat.work/series/typescript/intermediate/10-utility-type-pick-omit/</link><pubDate>Sun, 09 Aug 2026 12:00:00 +0000</pubDate><guid>https://rhidayat.work/series/typescript/intermediate/10-utility-type-pick-omit/</guid><description>An in-depth guide to &lt;code&gt;Pick&lt;/code&gt; and &lt;code&gt;Omit&lt;/code&gt; utility types in TypeScript. Learn under-the-hood mapped type implementations (&lt;code&gt;Pick&lt;/code&gt; via mapped types, &lt;code&gt;Omit&lt;/code&gt; via &lt;code&gt;Exclude&lt;/code&gt;), key constraints differences, building public API DTOs, and the selection decision matrix.</description></item><item><title>TS Ep 33: Built-in Utility Types (`Partial`, `Required`, `Readonly`)</title><link>https://rhidayat.work/series/typescript/intermediate/09-utility-type-partial-required-readonly/</link><pubDate>Sun, 09 Aug 2026 11:55:00 +0000</pubDate><guid>https://rhidayat.work/series/typescript/intermediate/09-utility-type-partial-required-readonly/</guid><description>An in-depth analysis of TypeScript&amp;rsquo;s foundational object utility types. Learn how &lt;code&gt;Partial&amp;lt;T&amp;gt;&lt;/code&gt;, &lt;code&gt;Required&amp;lt;T&amp;gt;&lt;/code&gt;, and &lt;code&gt;Readonly&amp;lt;T&amp;gt;&lt;/code&gt; transform property modifiers, their under-the-hood mapped type implementations (&lt;code&gt;?&lt;/code&gt;, &lt;code&gt;-?&lt;/code&gt;, &lt;code&gt;readonly&lt;/code&gt;), and shallow immutability limits.</description></item><item><title>TS Ep 32: Multiple &amp; Dependent Generic Parameters</title><link>https://rhidayat.work/series/typescript/intermediate/08-multiple-generic-parameters/</link><pubDate>Sun, 09 Aug 2026 11:50:00 +0000</pubDate><guid>https://rhidayat.work/series/typescript/intermediate/08-multiple-generic-parameters/</guid><description>An in-depth guide to using multiple generic parameters in TypeScript. Learn dependent type parameter relationships, object merging signatures, and how to solve the Partial Generic Inference Trap using higher-order curried functions.</description></item><item><title>TS Ep 31: Default Generic Arguments (`&lt;T = Default&gt;`)</title><link>https://rhidayat.work/series/typescript/intermediate/07-default-generic-arguments/</link><pubDate>Sun, 09 Aug 2026 11:45:00 +0000</pubDate><guid>https://rhidayat.work/series/typescript/intermediate/07-default-generic-arguments/</guid><description>An in-depth guide to Default Generic Arguments in TypeScript. Learn how assigning fallback types (&lt;code&gt;&amp;lt;T = Default&amp;gt;&lt;/code&gt;) simplifies generic interfaces, combining constraints with defaults (&lt;code&gt;&amp;lt;T extends Constraint = Default&amp;gt;&lt;/code&gt;), and enforcing strict parameter ordering rules.</description></item><item><title>TS Ep 30: Generic Constraints (`extends` Keyword)</title><link>https://rhidayat.work/series/typescript/intermediate/06-generic-constraints-extends/</link><pubDate>Sun, 09 Aug 2026 11:40:00 +0000</pubDate><guid>https://rhidayat.work/series/typescript/intermediate/06-generic-constraints-extends/</guid><description>An in-depth guide to Generic Constraints in TypeScript. Learn why unconstrained &lt;code&gt;&amp;lt;T&amp;gt;&lt;/code&gt; limits property access, how &lt;code&gt;&amp;lt;T extends Shape&amp;gt;&lt;/code&gt; establishes lower type bounds, why generic constraints outperform interface parameter types, and how to constrain keys using &lt;code&gt;&amp;lt;K extends keyof T&amp;gt;&lt;/code&gt;.</description></item><item><title>TS Ep 29: Introduction to Generics — Type Parameters (&lt;T&gt;)</title><link>https://rhidayat.work/series/typescript/intermediate/05-intro-to-generics/</link><pubDate>Sun, 09 Aug 2026 11:35:00 +0000</pubDate><guid>https://rhidayat.work/series/typescript/intermediate/05-intro-to-generics/</guid><description>An in-depth introduction to Generics in TypeScript. Learn how type parameters (&lt;code&gt;&amp;lt;T&amp;gt;&lt;/code&gt;) bridge reusable logic with strict type safety, generic type inference, generic interfaces (&lt;code&gt;ApiResponse&amp;lt;T&amp;gt;&lt;/code&gt;), and generic classes.</description></item><item><title>TS Ep 28: The `typeof` Type Operator (Value to Type Space)</title><link>https://rhidayat.work/series/typescript/intermediate/04-typeof-operator/</link><pubDate>Sun, 09 Aug 2026 11:30:00 +0000</pubDate><guid>https://rhidayat.work/series/typescript/intermediate/04-typeof-operator/</guid><description>An in-depth guide to the &lt;code&gt;typeof&lt;/code&gt; operator in Type Space. Learn the distinction between Value Space and Type Space, reverse-engineering types from runtime objects and functions, combining &lt;code&gt;keyof typeof&lt;/code&gt;, and deriving single-source-of-truth types.</description></item><item><title>TS Ep 27: The `keyof` Type Operator</title><link>https://rhidayat.work/series/typescript/intermediate/03-keyof-operator/</link><pubDate>Sun, 09 Aug 2026 11:25:00 +0000</pubDate><guid>https://rhidayat.work/series/typescript/intermediate/03-keyof-operator/</guid><description>An exhaustive guide to the &lt;code&gt;keyof&lt;/code&gt; operator in TypeScript. Learn how &lt;code&gt;keyof&lt;/code&gt; extracts property key unions from object interfaces, array/tuple types, index signatures, and how to combine &lt;code&gt;keyof&lt;/code&gt; with Generics to build type-safe property accessors.</description></item><item><title>TS Ep 26: Indexed Access Types (`T[K]`)</title><link>https://rhidayat.work/series/typescript/intermediate/02-indexed-access-types/</link><pubDate>Sun, 09 Aug 2026 11:20:00 +0000</pubDate><guid>https://rhidayat.work/series/typescript/intermediate/02-indexed-access-types/</guid><description>An in-depth guide to Indexed Access Types (&lt;code&gt;T[K]&lt;/code&gt;). Learn how to look up specific property types from object shapes, perform nested indexing, index with unions &lt;code&gt;T['a' | 'b']&lt;/code&gt;, extract array element types using &lt;code&gt;[number]&lt;/code&gt;, and enforce DRY type architectures.</description></item><item><title>TS Ep 25: Interfaces vs. Type Aliases — The Definitive Comparison</title><link>https://rhidayat.work/series/typescript/intermediate/01-interfaces-vs-type-aliases/</link><pubDate>Sun, 09 Aug 2026 11:15:00 +0000</pubDate><guid>https://rhidayat.work/series/typescript/intermediate/01-interfaces-vs-type-aliases/</guid><description>An exhaustive comparison of &lt;code&gt;interface&lt;/code&gt; vs &lt;code&gt;type&lt;/code&gt; in TypeScript. Understand Declaration Merging, &lt;code&gt;extends&lt;/code&gt; vs Intersections (&lt;code&gt;&amp;amp;&lt;/code&gt;), compiler performance during type checking, and the precise decision matrix for choosing between them.</description></item><item><title>TS Ep 15: Immutability with `as const` &amp; Const Assertions</title><link>https://rhidayat.work/series/typescript/fundamental/15-as-const-and-immutability/</link><pubDate>Sun, 09 Aug 2026 11:10:00 +0000</pubDate><guid>https://rhidayat.work/series/typescript/fundamental/15-as-const-and-immutability/</guid><description>An exhaustive analysis of Const Assertions (&lt;code&gt;as const&lt;/code&gt;). Learn the 3 transformation rules of const assertions, deep recursive read-only object properties, converting arrays into readonly tuples, and deriving union types dynamically using &lt;code&gt;typeof ARRAY[number]&lt;/code&gt;.</description></item><item><title>TS Ep 14: The Never Type &amp; Exhaustive Checks</title><link>https://rhidayat.work/series/typescript/fundamental/14-the-never-type-and-exhaustive-checks/</link><pubDate>Sun, 09 Aug 2026 11:05:00 +0000</pubDate><guid>https://rhidayat.work/series/typescript/fundamental/14-the-never-type-and-exhaustive-checks/</guid><description>An exhaustive deep dive into TypeScript&amp;rsquo;s bottom type (&lt;code&gt;never&lt;/code&gt;). Learn how set theory models the empty set ($mptyset$), the 3 sources of &amp;rsquo;never&amp;rsquo; in type analysis, and how to implement compile-time exhaustiveness checking for Discriminated Unions.</description></item><item><title>TS Ep 13: Function Overloads — Polymorphic Signatures</title><link>https://rhidayat.work/series/typescript/fundamental/13-function-overloads/</link><pubDate>Sun, 09 Aug 2026 11:00:00 +0000</pubDate><guid>https://rhidayat.work/series/typescript/fundamental/13-function-overloads/</guid><description>An in-depth guide to Function Overloads in TypeScript. Learn how to define multiple overload signatures, why the implementation signature is invisible to callers, how TypeScript matches overloads sequentially, and when to use Union types instead of Overloads.</description></item><item><title>TS Ep 12: Function Typing, Call Signatures, and Void Semantics</title><link>https://rhidayat.work/series/typescript/fundamental/12-function-typing-and-void/</link><pubDate>Sun, 09 Aug 2026 10:55:00 +0000</pubDate><guid>https://rhidayat.work/series/typescript/fundamental/12-function-typing-and-void/</guid><description>An exhaustive guide to typing functions in TypeScript. Learn function expressions, type aliases, destructuring parameter signatures, optional/default/rest parameters, call signatures with properties, and why &amp;lsquo;void&amp;rsquo; callbacks ignore return values.</description></item><item><title>TS Ep 11: Discriminated Unions — Tagged Unions &amp; Domain Modeling</title><link>https://rhidayat.work/series/typescript/fundamental/11-discriminated-unions/</link><pubDate>Sun, 09 Aug 2026 10:50:00 +0000</pubDate><guid>https://rhidayat.work/series/typescript/fundamental/11-discriminated-unions/</guid><description>An exhaustive guide to Discriminated Unions in TypeScript. Learn why optional property blobs create impossible states, the 3 requirements for tagged unions, how Control Flow Analysis narrows discriminants, and real-world domain state patterns.</description></item><item><title>TS Ep 10: Custom Type Guards &amp; Assertion Functions</title><link>https://rhidayat.work/series/typescript/fundamental/10-custom-type-guards-is/</link><pubDate>Sun, 09 Aug 2026 10:45:00 +0000</pubDate><guid>https://rhidayat.work/series/typescript/fundamental/10-custom-type-guards-is/</guid><description>Learn how to build custom runtime type validators in TypeScript. Master Type Predicates (&lt;code&gt;parameter is Type&lt;/code&gt;), Assertion Functions (&lt;code&gt;asserts val is Type&lt;/code&gt;), array &lt;code&gt;.filter()&lt;/code&gt; type narrowing, and safely parsing untrusted external JSON data.</description></item><item><title>TS Ep 9: Type Narrowing &amp; Control Flow Analysis</title><link>https://rhidayat.work/series/typescript/fundamental/09-type-narrowing-typeof-instanceof/</link><pubDate>Sun, 09 Aug 2026 10:40:00 +0000</pubDate><guid>https://rhidayat.work/series/typescript/fundamental/09-type-narrowing-typeof-instanceof/</guid><description>Understand how TypeScript&amp;rsquo;s Control Flow Analysis engine refines types across code branches. Master typeof guards (and the typeof null quirk), instanceof class narrowing, the &amp;lsquo;in&amp;rsquo; property operator, equality narrowing, and truthiness pitfalls.</description></item><item><title>TS Ep 8: Literal Types — Unit Types &amp; Enum Alternatives</title><link>https://rhidayat.work/series/typescript/fundamental/08-literal-types/</link><pubDate>Sun, 09 Aug 2026 10:35:00 +0000</pubDate><guid>https://rhidayat.work/series/typescript/fundamental/08-literal-types/</guid><description>An in-depth breakdown of TypeScript Literal Types. Understand unit types in set theory, how string/number literal unions replace Enums with zero runtime overhead, and how to solve object property literal widening bugs.</description></item><item><title>TS Ep 7: Union and Intersection Types — Set Theory Mechanics</title><link>https://rhidayat.work/series/typescript/fundamental/07-union-and-intersection-types/</link><pubDate>Sun, 09 Aug 2026 10:30:00 +0000</pubDate><guid>https://rhidayat.work/series/typescript/fundamental/07-union-and-intersection-types/</guid><description>An in-depth analysis of Unions and Intersections in TypeScript. Understand how set theory models type relationships ($A \cup B$ vs $A \cap B$), property access rules, property conflict resolution to &amp;rsquo;never&amp;rsquo;, and operator precedence.</description></item><item><title>TS Ep 6: Any vs. Unknown — Top Types and Type Safety</title><link>https://rhidayat.work/series/typescript/fundamental/06-any-vs-unknown/</link><pubDate>Sun, 09 Aug 2026 10:25:00 +0000</pubDate><guid>https://rhidayat.work/series/typescript/fundamental/06-any-vs-unknown/</guid><description>Understand the type-system mechanics of top types in TypeScript. Learn why &amp;lsquo;any&amp;rsquo; disables type checking and causes type contagion, why &amp;lsquo;unknown&amp;rsquo; provides safe dynamic typing, and how to use &amp;lsquo;unknown&amp;rsquo; with runtime validation.</description></item><item><title>TS Ep 5: Arrays, Tuples, and Readonly Collections</title><link>https://rhidayat.work/series/typescript/fundamental/05-arrays-and-tuples/</link><pubDate>Sun, 09 Aug 2026 10:20:00 +0000</pubDate><guid>https://rhidayat.work/series/typescript/fundamental/05-arrays-and-tuples/</guid><description>An exhaustive guide to typing collections in TypeScript. Learn the syntax differences between T[] and Array&lt;!-- raw HTML omitted --&gt;, union array typing precedence, labeled tuple elements, rest tuples, and why readonly arrays prevent array mutation bugs.</description></item><item><title>TS Ep 4: Object Types, Interfaces, and Structural Typing</title><link>https://rhidayat.work/series/typescript/fundamental/04-object-types-and-interfaces/</link><pubDate>Sun, 09 Aug 2026 10:15:00 +0000</pubDate><guid>https://rhidayat.work/series/typescript/fundamental/04-object-types-and-interfaces/</guid><description>Learn how to model object shapes in TypeScript. We cover inline types, type aliases, interfaces, optional properties vs undefined, readonly modifiers, index signatures, and TypeScript&amp;rsquo;s structural type system.</description></item><item><title>TS Ep 3: Type Annotations vs. Type Inference</title><link>https://rhidayat.work/series/typescript/fundamental/03-type-annotations-vs-inference/</link><pubDate>Sun, 09 Aug 2026 10:10:00 +0000</pubDate><guid>https://rhidayat.work/series/typescript/fundamental/03-type-annotations-vs-inference/</guid><description>Stop writing redundant type annotations. Learn how TypeScript infers types, the mechanics of literal type widening (&lt;code&gt;let&lt;/code&gt; vs &lt;code&gt;const&lt;/code&gt;), contextual typing in callbacks, and the precise rules for when explicit type annotations are required.</description></item><item><title>TS Ep 2: Primitive Types — Deep Dive into JS Primitives</title><link>https://rhidayat.work/series/typescript/fundamental/02-primitive-types/</link><pubDate>Sun, 09 Aug 2026 10:05:00 +0000</pubDate><guid>https://rhidayat.work/series/typescript/fundamental/02-primitive-types/</guid><description>An exhaustive breakdown of TypeScript&amp;rsquo;s 7 primitive types. Learn how TS handles floating-point numbers, BigInts, symbols, strictNullChecks, and the critical structural differences between lowercase primitive types and uppercase Object wrappers.</description></item><item><title>TS Ep 1: Introduction, Compilation, and Compiler Setup</title><link>https://rhidayat.work/series/typescript/fundamental/01-introduction-and-setup/</link><pubDate>Sun, 09 Aug 2026 10:00:00 +0000</pubDate><guid>https://rhidayat.work/series/typescript/fundamental/01-introduction-and-setup/</guid><description>An in-depth introduction to TypeScript architecture. Understand static type checking vs runtime behavior, the internal stages of the TypeScript compiler (tsc), type erasure, and how to configure tsconfig.json with strict flags for professional development.</description></item></channel></rss>