Expertise

Freelance TypeScript developer

TypeScript developer for robust, maintainable code

TypeScript is JavaScript that's been taught discipline. Errors are flagged in the editor instead of surfacing for your users, autocompletion guides every line, and the code stays safe to evolve. It's the foundation I build my React and Inertia applications on.

Strict typing to limit integration and regression bugs.
Autocompletion and safe refactoring across the whole project.
Types shared between the React front-end and the back-end for clean integration.

TypeScript is the foundation of my modern stack: typed JavaScript that catches errors in the editor, before production. I use it systematically with React and Inertia to deliver code that is readable, safe to evolve and comfortable to pick up, whether it's mine or a team's.

TypeScript is JavaScript with one thing added: types. In plain JavaScript, a variable can hold anything, and a typo or a misnamed field only shows up when the code runs — often too late, on a user's screen. With TypeScript, you describe the shape of your data: this customer has a name (text), an age (number), a list of orders. As soon as the code deviates from that shape, the editor flags it immediately, in red, before you've even run anything.

The important point is that this typing changes nothing about what actually runs in the end. TypeScript is compiled to standard JavaScript before being sent to the browser: it doesn't weigh down your application, adds no load time, doesn't slow execution. It's a tool that works during development, like a proofreader looking over your shoulder, then steps aside once the code is delivered. You keep the entire JavaScript ecosystem — the same libraries, the same tools — with an added safety net.

This difference seems technical, but its effects are very concrete for your project. A large share of the bugs in a web application aren't complicated logic errors: they're silly mistakes. A field expected as text that arrives as a number, a sometimes-missing piece of data nobody remembered to handle, a function called with the wrong parameter. TypeScript catches exactly this family of errors, automatically, across the whole codebase. That's so many problems that will never turn into a support ticket or an emergency fix on a Friday night.

TypeScript isn't a developer's gadget or a passing fad. It's now an industry standard: React, modern frameworks and the major libraries are all designed with it in mind. Adopting it isn't a risky bet on some obscure technology, it's aligning with the way serious JavaScript is now written. For you, that means up-to-date code that any competent developer will be able to pick up.

The real benefit of TypeScript isn't visible on day one, but on the day you need to change something. On a plain JavaScript application, changing the name of a field or the structure of a piece of data means launching a manual hunt across the whole project, hoping you forgot nothing — and discovering the things you missed in production. With TypeScript, you rename in one place, and every line that depended on that data immediately starts flagging the problem. The code itself tells you everything that's left to fix. Refactoring stops being a leap into the void.

The other daily gain is autocompletion. Because the editor knows the exact shape of each piece of data, it suggests the right fields, the right functions, the right arguments, instead of leaving you to guess and check the documentation. You code faster, with fewer round trips and fewer careless mistakes. This comfort, trivial at the scale of a single line, changes everything at the scale of an entire project: it's hours saved and a lighter mental load.

For you, the client, all of this translates into one simple thing: reliability. A typed application breaks less often when you extend it, because the side effects of a change are visible immediately. You can ask for a new feature six months after delivery without fearing it will knock over what already worked. That's the difference between software you evolve with confidence and software you no longer dare touch for fear of breaking everything.

TypeScript doesn't replace tests, and I never present it as a magic guarantee. It verifies that the pieces fit together correctly, not that the business logic actually does what it should. The two complement each other: typing eliminates a whole category of errors upstream, tests validate the expected behaviour. It's this combination — strict types and tests on the paths that matter — that produces an application you can really rely on over time.

I never use TypeScript in isolation: it's the common thread of my entire front-end stack. With React, every component, every hook, every piece of logic is typed, which makes interfaces far more solid — you can't pass bad data to a component without the editor protesting at once. On this portfolio as on my client projects, React and TypeScript move forward together, and it's precisely this duo that makes it possible to deliver rich interfaces without drowning in integration bugs.

It's with Inertia that TypeScript takes on its full dimension. Inertia connects a React front-end to a Laravel back-end, and the typing weaves a strong link between the two: the data leaving the server arrives typed on the interface side. A field renamed in the back-end is flagged immediately in the front-end, in the editor, and not three weeks later on a user's screen. This end-to-end continuity is one of the great advantages of the approach: you work on a single coherent whole rather than on two worlds that talk to each other badly.

Types describe the structure of data, but they don't verify what actually comes in from outside — an API response, a form filled in by a visitor. For that, I add Zod: it validates data at runtime and automatically infers the types, so that a single definition serves both as a real safeguard and as a source of truth for TypeScript. You get a complete chain: data is checked when it enters, then typed everywhere it travels afterwards.

All of this is only worthwhile if it's verified automatically, without depending on anyone's discipline. So I set up type checking in continuous integration: with every code push, the project is recompiled and the slightest type inconsistency fails the build before any deployment. Coupled with ESLint, Prettier and tests, it forms a set of safeguards that run in the background. The code that goes to production has necessarily passed these checks — quality doesn't rest on vigilance, but on tooling.

I'm a freelance developer based in Martinique, and I work just as readily with organisations in the French West Indies as with clients in mainland France or elsewhere. TypeScript plays a role here that goes beyond the technical: it's also a guarantee of transparency. The code is typed, readable and documented by its types themselves, which means you're never dependent on a single provider. Any competent developer can pick up the work and understand the structure without a long decoding phase.

For a Martinican company, this point matters particularly. The local market is smaller than in mainland France, and entrusting a project to a freelancer always raises the same legitimate question: what happens if you have to change person? Well-structured TypeScript code answers that concern directly. It's designed to be handed over, not to create dependency. It's a concrete assurance about the durability of your investment, independent of our collaboration.

Before writing a single line, I take the time to scope the project: what the tool must do, for whom, what data it handles. The typing actually starts there, by cleanly describing the business concepts — a customer, an order, a product. This modelling work clarifies the project for you as much as for me, and it avoids countless misunderstandings along the way, because the data structure is set and shared from the start rather than discovered as you go.

Finally, I don't disappear once the project is delivered. Typed code stays healthy over time: it withstands changes better, welcomes new features without accumulating silent technical debt, and is easy to pick up. I offer follow-up for improvements and maintenance, and 30 days of support are included after going live. My role isn't just to deliver code that works today, but a foundation you can keep alive with peace of mind tomorrow.

Strict modeEnabled on all new projects
Shared typesBetween React front-end and back-end
ZodRuntime data validation
100% typedComponents, hooks and business logic

The advantages

  • Fewer bugs in production: type errors, forgotten fields and typos are flagged in the editor, not on your users' screens.
  • Safe refactoring: renaming or restructuring data instantly highlights all the code to fix, with no manual hunt.
  • Precise autocompletion: the editor knows the shape of the data and guides every line, to code faster and more accurately.
  • Types shared with the back-end: via Inertia, a change on the server side is reflected immediately on the interface side.
  • Documented, transferable code: types describe the intentions, and another developer can pick up the project without rediscovering everything.
  • No runtime overhead: TypeScript is compiled to standard JavaScript, with no added weight or slowdown in the browser.

Limitations to be aware of

  • A real upfront effort: writing the types takes time at the start, before the gain in reliability is felt.
  • Doesn't replace tests: TypeScript verifies that the pieces fit together, not that the business logic is correct.
  • Pointless on a throwaway script: for a few one-off lines, typing brings more ceremony than value.
  • Depends on the quality of the types: poorly typed code that works around the system loses most of its guarantees.

TypeScript brings a great deal as soon as a project has to last, but it isn't always essential. Here's how I decide, without imposing rigour you have no use for.

Choose TypeScript if…

  • You're developing an application set to grow and evolve over time.
  • The project handles structured data: customers, orders, forms, APIs.
  • Several people work on the code, or it will have to be handed over one day.
  • You use React, Inertia or Node.js and want a reliable, maintainable foundation.
  • Robustness and stress-free evolution matter more than a few hours saved at the start.

Prefer something else if…

  • You're writing a small one-off script, with no future or planned reuse.
  • The project is tiny and fixed: typing would mainly add ceremony.
  • You're prototyping an idea very fast, to be thrown away afterwards, with no reliability stakes.
  • No one on the team knows TypeScript and the deadline rules out any upskilling.
  • The need comes down to a few lines grafted onto an existing page.

  • React and Inertia applications typed end to end
  • Codebases built to last and to evolve
  • Team projects where readability matters
  • Gradual migration of an existing JavaScript codebase

Fewer bugs in production

The compiler flags type errors, renamed fields and forgotten cases in the editor, before they reach your users.

Autocompletion and refactoring

The editor knows the shape of your data: precise suggestions, reliable global renames, navigating the code without guessing.

A foundation that lasts

Types document the code and stay up to date. Another developer can pick up the project without rediscovering everything, even months later.

01

Strict configuration

tsconfig in strict mode, ESLint and Prettier, editor integration. A healthy foundation from the very first line.

02

Modelling the types

Interfaces and types for business data, runtime validation with Zod, types shared with the API.

03

Typed development

React components, hooks and business logic fully typed. Errors show up as you write, not at runtime.

04

Continuous verification

Type checking in CI, Vitest tests, a build that fails at the slightest inconsistency before deployment.

FAQ

At the very start, writing the types takes some effort. Very quickly, autocompletion and error detection save far more time than they cost, especially as the project grows.

A TypeScript project? Let’s talk.

I scope out your needs and tell you honestly whether TypeScript is the right choice for your project.