Anyone who keeps GraphQL queries manually in sync with types builds up technical debt, every single time a schema field changes. Code generation from the schema and operations files turns types into automation instead of a maintenance chore.
Variadic tuple types allow the spread operator at any position inside a tuple type, not only at the end. This makes function signatures for currying, generic tuple concat, and typesafe event emitters possible, something that previously required many manual overloads or a fallback to any. This article shows the syntax, three practical examples, and the boundaries of tuple inference.
Overloads let a single function expose several callable signatures while only one implementation exists behind the scenes. Used correctly they produce far more precise return types than a single signature built from union types, but they also come with their own pitfalls, from resolution order to unreachable signatures.
TypeScript allows generics over concrete types, but not generics over type constructors themselves. A function that works equally well for any container type such as Array, Option, or Promise cannot be written directly. Through a technique called defunctionalization, known as the URI pattern from fp-ts, this missing feature can still be simulated in a practical way.
When frontend and backend define their own independently maintained types for the same API, both sides eventually drift apart, and the bug only surfaces at runtime for the customer. A shared contract package in a TypeScript monorepo makes such deviations visible at compile time instead.
Modeling TypeScript types purely with any or loosely shaped objects gives away the strength of the type system. Union types describe one of several possible shapes, intersection types combine multiple shapes into one. Used correctly, they produce API models and compositions that the compiler actually enforces.
Hono RPC produces a fully typed API client directly from the return type of the server routes, with no separate code generation step and no duplicated schema. The server itself becomes the single source of truth for endpoint, payload and response.
Anyone running TypeScript in Node.js projects quickly runs into conflicting advice about tsc, ts-node, ESM, and CommonJS. This article covers the practical options for running TypeScript in Node, clears up the module interop pitfalls between ESM and CommonJS, and gives you a minimal, working tsconfig for CLI and build-script projects, including the native type-stripping support in recent Node versions.
A full rewrite of a grown JavaScript codebase almost always fails in practice against time pressure, live operations, and merge conflicts. This article shows how allowJs and checkJs surface type errors without renaming a single file, which order of migration actually holds up, and how teams bring the migration to a measurable finish instead of getting stuck in a permanent in-between state.
Deno runs .ts files directly, no tsc, no ts-node, no node_modules. Developers coming from the Node.js ecosystem need to recalibrate a few assumptions about type checking, modules, and security.