#JavaScript

Articles about JavaScript — exploring patterns, best practices, and real-world implementations in production systems.

8 posts tagged with javascript. ← All posts

#A2A (14)#ADK (8)#AG-UI (6)#AI (9)#AI Agents (311)#AI Architecture (10)#AI Cost (10)#AI Cost Optimization (8)#AI Engineering (201)#AI Evaluation (8)#AI Governance (29)#AI Red Teaming (9)#AI Research (9)#AI Safety (8)#AI Security (21)#AI in Production (12)#AML (3)#API Design (10)#API Security (8)#APIs (55)#AWS (17)#Accounting (9)#Agent Skills (3)#Agentic AI (24)#Agentic Commerce (12)#Agentic RAG (8)#Agents (4)#Amazon Bedrock (8)#Analytics (3)#Architecture (36)#Audit (3)#Authentication (11)#Authorization (3)#Automation (6)#Azure (11)#Azure AI Foundry (9)#Backend Engineering (310)#Benchmarks (3)#Best Practices (3)#BigQuery (6)#Business Finance (8)#Business Strategy (55)#C (8)#CI/CD (8)#Caching (10)#Capital Markets (14)#Card Payments (12)#Cards (13)#Career (24)#Checkpointing (4)#Claude Code (8)#Cloud (5)#Cloud Architecture (3)#Cloud Native (10)#Code Review (8)#Collaboration (5)#Communication (9)#Compliance (52)#Computer Networking (9)#Computer Science (32)#Computer Vision (5)#Concurrency (37)#Consulting (3)#Containers (10)#Context Engineering (10)#Cost Optimisation (5)#Credit (14)#Credit Risk (14)#CrewAI (8)#Crypto (12)#Cryptocurrency (12)#Cryptography (8)#Custody (9)#DSPy (8)#Data (13)#Data Engineering (12)#Data Structures (9)#Databases (37)#Deployment (3)#Design Patterns (10)#DevOps (16)#DevSecOps (11)#Developer Experience (5)#Developer Tools (5)#Distributed Systems (94)#Documentation (3)#Edge AI (8)#Embeddings (15)#Emotional Intelligence (8)#Energy (8)#Engineering (11)#Engineering Culture (3)#Engineering Practices (16)#Error Handling (4)#Evaluation (53)#Event-Driven Architecture (8)#FREE-AI (8)#FX (5)#Feedback (4)#FinOps (23)#FinTech (6)#Financial AI (14)#Financial Systems (129)#Fine-Tuning (11)#Fintech (131)#Flutter (8)#Foreign Exchange (5)#Forward Deployed Engineer (8)#Forward Deployed Engineering (8)#Fraud (10)#Function Tools (5)#Functional Programming (3)#Fundraising (8)#GCP (5)#Gemma (4)#Generative AI (3)#Git (8)#Go (220)#Go-to-Market (8)#Google ADK (36)#Governance (56)#Granite (6)#GraphQL (3)#Growth (3)#Guardrails (25)#HIPAA (3)#HTTP (3)#Harness Engineering (8)#Hiring (8)#Hugging Face (8)#Human-in-the-Loop (8)#IBM watsonx (8)#Identity (11)#Integration (3)#Intellectual Property (8)#Interfaces (3)#JavaScript (8)#KYC (11)#KYC and AML (12)#Kafka (10)#Kubernetes (17)#LLM (5)#LLM Inference (8)#LLM-as-Judge (3)#LLMs (135)#LangChain (8)#LangGraph (11)#Leadership (26)#Ledger (12)#Legal (8)#Lending (14)#LlamaIndex (8)#MCP (22)#MLOps (31)#Machine Learning (32)#Marketing (16)#Markets (4)#Memory (15)#Memory Management (5)#Metrics (6)#Microservices (3)#Microsoft Agent Framework (150)#Middleware (6)#Migration (9)#Monitoring (3)#Multi-Agent (10)#Multi-Agent AI (14)#Multi-Agent Systems (73)#Multimodal (3)#Multimodal AI (8)#NIM (5)#NVIDIA (8)#OAuth (3)#OWASP (7)#Observability (44)#On-Device AI (8)#Open Source (7)#OpenTelemetry (5)#Operating Systems (8)#Operations (10)#Opinion (6)#Orchestration (10)#Organizational Design (8)#Payment Rails (16)#Payments (54)#People (8)#Performance (43)#Platform Engineering (9)#PreSales (8)#Privacy (5)#Privacy Engineering (3)#Process (4)#Product (27)#Product Management (8)#Production (8)#Programming (10)#Programming Languages (48)#Prompt Engineering (66)#Prompt Injection (6)#Protocol Buffers (3)#Protocols (9)#Providers (4)#Pydantic AI (8)#Python (142)#Quality (3)#RAG (58)#RBI (3)#REST (5)#Rails (16)#Reasoning Models (8)#Reconciliation (3)#RegTech (8)#Regulation (9)#Reliability (48)#Resilience (4)#Responsible AI (5)#Retrieval (3)#Risk (13)#Rust (32)#SRE (21)#Sales (9)#Scalability (3)#Security (81)#Security Engineering (8)#Self-Evolving Agents (16)#Sessions (3)#Settlement (9)#Soft Skills (8)#Software (3)#Software Architecture (36)#Software Engineering (144)#Spanner (4)#Startups (30)#Strands (8)#Streaming (28)#Structured Output (4)#Sustainability (8)#System Design (32)#Systems Programming (48)#Testing (49)#Tool Use (22)#Tooling (4)#Tools (3)#Trading (8)#Treasury (6)#Type System (3)#Type Systems (11)#TypeScript (8)#Vector Databases (21)#Vector Search (11)#Venture Capital (8)#Version Control (8)#Web Development (6)#Workflows (14)#gRPC (13)#smolagents (8)
Pratik Dhanave · ·6 min read

Idiomatic TypeScript at Scale

Knowing the type system isn't the same as using it well. Idiomatic TypeScript is a set of judgments: lean on inference, avoid `any`, model impossible states out of existence, and know when a type earns its complexity. On a large, long-lived codebase these habits are the difference between types that catch bugs and types that are decorative noise. This closing post turns the mechanics of the series into a working discipline.

Knowing the type system isn't the same as using it well. Idiomatic TypeScript is a set of judgments: lean on inference, avoid any, model impossible states out of existence, and know when a type earns its complexity. On a large codebase these habits separate types that catch bugs from types that are decorative noise.

Pratik Dhanave · ·5 min read

Modules, Config, and Tooling

Types are only half of TypeScript; the other half is the machinery that compiles, configures, and connects your code to the vast JavaScript ecosystem. ES modules organize code, `tsconfig.json` controls how strictly the compiler checks it, and declaration files let typed and untyped code interoperate. Understanding this layer is what turns a working `.ts` file into a real, maintainable project.

Types are only half of TypeScript; the other half is the machinery that compiles, configures, and connects your code to the JavaScript ecosystem. ES modules organize code, tsconfig.json controls how strictly the compiler checks it (turn on strict), and declaration files let typed and untyped code interoperate. This is the practical infrastructure of a project.

Pratik Dhanave · ·6 min read

Typing Async Code and the Event Loop

Almost everything interesting in JavaScript is asynchronous — network calls, file reads, timers — and TypeScript types all of it through one generic: `Promise<T>`. But typing async code well means understanding the runtime it describes: the single-threaded event loop that makes non-blocking concurrency work. Types and runtime together are what let you write async code that's both correct and comprehensible.

Almost everything interesting in JavaScript is asynchronous, and TypeScript types all of it through one generic: Promise<T>. But typing async code well means understanding the runtime it describes — the single-threaded event loop that makes non-blocking concurrency work. Types and runtime together let you write async code that's correct and comprehensible.

Pratik Dhanave · ·6 min read

Utility and Mapped Types

TypeScript's type system is itself a small programming language — you can compute new types from existing ones. The built-in utility types (`Partial`, `Pick`, `Omit`, `Record`) are the everyday face of this; underneath, `keyof`, mapped types, conditional types, and template literal types are the primitives that make them possible. Learning to derive types instead of hand-writing them is what separates fluent TypeScript from annotation-copying.

TypeScript's type system is itself a small programming language — you can compute new types from existing ones. The built-in utility types (Partial, Pick, Omit, Record) are the everyday face; underneath, keyof, mapped types, conditional types, and template literals are the primitives. Learning to derive types instead of hand-writing them is what separates fluent TypeScript.

Pratik Dhanave · ·6 min read

Generics

Generics are how you write code that works over many types without giving up type safety — a function or type parameterized by a type it fills in later. They're the feature people find most intimidating and the one that unlocks reusable, precisely-typed abstractions. Once you see a generic as "a type variable," the intimidation fades and the power remains.

Generics are how you write code that works over many types without giving up type safety — a function or type parameterized by a type it fills in later. They're the feature people find most intimidating and the one that unlocks reusable, precisely-typed abstractions. Once you see a generic as "a type variable," the intimidation fades.

Pratik Dhanave · ·6 min read

Unions, Narrowing, and Type Guards

Union types are TypeScript's way of saying "this could be one of several things," and they're everywhere in real JavaScript — a value that's a string or a number, a result that's data or an error. The companion skill is narrowing: convincing the compiler, through ordinary runtime checks, which member of the union you actually have. Master unions, narrowing, and exhaustiveness and you can model the messy reality of JavaScript data precisely and safely.

Union types are TypeScript's way of saying "this could be one of several things," and they're everywhere in real JavaScript. The companion skill is narrowing: convincing the compiler, through ordinary runtime checks, which member you actually have. Master unions, narrowing, and exhaustiveness and you can model messy JavaScript data precisely and safely.

Pratik Dhanave · ·6 min read

The Structural Type System

TypeScript's type system has two properties that shape everything you do with it: it judges compatibility by structure rather than by name, and it infers types so you rarely have to spell them out. Add the small vocabulary of primitives, literal types, and the special types `any`, `unknown`, and `never`, and you have the foundation the rest of the language builds on.

TypeScript's type system has two properties that shape everything: it judges compatibility by structure rather than name, and it infers types so you rarely spell them out. Add the vocabulary of primitives, literal types, and the special types any, unknown, and never, and you have the foundation the rest of the language builds on.

Pratik Dhanave · ·5 min read

Why Put Types on JavaScript

JavaScript runs everywhere and forgives everything — including your mistakes, right up until they reach production. TypeScript adds a static type layer on top of JavaScript that catches those mistakes at compile time, while compiling away to plain JavaScript that runs unchanged. Understanding what TypeScript actually is — a structural type checker that erases at build time — is the foundation for everything else.

JavaScript runs everywhere and forgives everything — including your mistakes, right up until production. TypeScript adds a static type layer that catches them at compile time, then compiles away to plain JavaScript. Understanding what TypeScript actually is — a structural type checker that erases at build time — is the foundation for everything else.

All posts on this site are written by Pratik Dhanave, an Agentic AI Architect with 7+ years building production distributed systems, multi-agent AI platforms, and cloud-native infrastructure. About the author → Each article includes working code, architecture diagrams, and references to the specific frameworks and standards discussed. Browse all posts or explore related topics using the tag cloud above.