RTS questionnaire · Q13 · TypeScript proof

How many years of experience do you have with TypeScript and JavaScript?

A runnable review of how the years are actually spent: strict compilation, domain modelling with unions and generics, validation at the boundary, async that cannot hang, and a bundle that stays inside its budget.

Status: reviewed Live TypeScript workflow JavaScript 20+ · TypeScript 8+ yrs Jump to live proof ↓

13. TypeScript and JavaScript experience

Answer as submitted

“JavaScript: 20+ years. TypeScript: 8+ years of continuous professional use.”
Technical decision: expand. A number of years says nothing about how the language is used. This page is the separate, detailed version: it shows the compiler configuration the code is held to, the modelling style, and where the type system stops and runtime validation begins.

Expanded answer

JavaScript 20+ years — from ES3/ES5 and DOM-era engineering through modern ES2015+: modules, closures and the event loop, promises and async/await, functional composition, WebSockets/real-time flows, Node.js services and Jest-based testing. TypeScript 8+ years of continuous professional use — strict compilation, discriminated unions and generics, branded types, exhaustive switches, typed API clients, typed lint rules and typed Angular/React components, with runtime validation only where data crosses a boundary. The two overlap: TypeScript above all is JavaScript whose behaviour at runtime still has to be understood.

DecisionWhere it is appliedWhy it is done this way
Strict compilationstrict + noUncheckedIndexedAccessNull and undefined mistakes are caught at build time, not by a user.
Domain modellingdiscriminated unions, generics, brandsIllegal states become unrepresentable and every branch must be handled.
Boundary validationschema parse on HTTP, queue and storage inputTypes are erased at runtime, so untrusted data is proven before use.
Async disciplineallSettled, timeouts, cancellation, async iteratorsA slow dependency degrades one part instead of hanging the request.
Error shapeResult<T, E> instead of thrown exceptionsThe failure branch cannot be forgotten by a caller.
Toolingtyped ESLint, Prettier, tsc --noEmit in CIConsistency is enforced by the pipeline, not by review alone.
Bundle budgetVite/esbuild budgets in the pipelinePayload size is a measured constraint as the application grows.

Live TypeScript workflow proof

The running component below changes its configuration/result view through real event binding. Select a step to see the decision, the reasoning behind it, and the measurement that proves it.

LIVE PREVIEW
RUNNING
TYPESCRIPT WORKFLOWRUNNING

Choose a TypeScript step

Select a step to inspect the decision, the reasoning and the measured result.

$ "strict": true, "noUncheckedIndexedAccess": true, "exactOptionalPropertyTypes": true

Strict mode is non-negotiable: null checks, no implicit any and verified indexed access, so type errors surface at build time instead of in production.

tsc: 0 errors  ·  0 implicit any
any occurrences in src: 3 (all at the infrastructure boundary)

How the years translate into practice

Rules I apply. Turn strict mode on and keep the any count at the infrastructure boundary only; model with unions so illegal states cannot be constructed; parse everything that crosses a boundary; write async code with explicit timeouts, cancellation and partial-failure handling; prefer a Result over a thrown exception on expected failure paths; and let the pipeline — typed lint, tsc --noEmit and bundle budgets — enforce the standard. Deep JavaScript knowledge is what makes this possible: the type system is a design tool, not a substitute for understanding the runtime.
Boundary for Q13: this page covers language and type-system practice. Monorepo build orchestration at scale, migration of a large untyped codebase and framework-specific rendering strategies are separate topics.

Source files

Select a file to inspect the proof with syntax highlighting and line numbers. The first file is the code running the component above; the other two are the production shapes of the same practice.

Acceptance criteria