# TypeScript developer — since 2019

> The work I do with TypeScript: Model Context Protocol servers, Node.js services and where the type system earns its place in server-side code.

- Highlights: 7 years
- Experience: Since 2019
- Updated: 2026-11-08
- Source: https://muhammetsafak.com/expertise/typescript/
- Language: en-US
- Author: Muhammet Şafak

---
## Me in the TypeScript ecosystem

Types are erased at runtime. That is why TypeScript is for me not a safeguard but a way of describing boundaries: the tool an MCP server exposes, the message a service takes off a queue, the answer an API returns. Once their shape is written in the code, wrong usage inside the code is caught before anything runs. On the [AI systems](https://muhammetsafak.com/expertise/ai-systems/) side that means servers that open tools to a model; on the [backend](https://muhammetsafak.com/expertise/backend/) side, service and data contracts.

I also accept up front that a type does not stand in for authorization. A server connected to a model is a trust boundary; a call of the right shape is not necessarily an authorized call. So I treat the type as the first layer and set up authorization and runtime validation separately. I cover the protocol itself on the [MCP page](https://muhammetsafak.com/expertise/mcp/), and building a model's answer out of documents on the [RAG page](https://muhammetsafak.com/expertise/rag/).

I choose the language by the problem: model training and data preparation in Python, places where performance and memory safety decide in Rust, the protocol and service layer in TypeScript. The posts that go into detail live on the blog.

## What is the TypeScript Developer role?

TypeScript is a programming language that adds a static type system on top of JavaScript and compiles to JavaScript. A TypeScript developer is the person who writes code in which the shape of a value is checked while writing, before anything runs.

## What does the TypeScript Developer do?

With TypeScript I write Model Context Protocol servers and services that run on Node.js. I describe the tools a server exposes and the inputs it accepts with types, wire the database, queue and cache layers in the same language under the same contract, and keep test and deploy steps in GitHub Actions.

## Technologies I pair it with

- TypeScript: The language I write Model Context Protocol servers in.
- Node.js: The runtime that runs TypeScript code on the server side.
- Model Context Protocol: A protocol that opens tools and context to a model; I treat every connected server as a trust boundary.
- PostgreSQL: The database I measured queue-table and index behaviour on.
- Redis: Cache, counters and short-lived locks.
- RabbitMQ: Asynchronous delivery between services; the exit door of the outbox relay.
- Docker: Development environment and deployment unit.
- GitHub Actions: Test and deploy pipeline; the steps that SSH into the server live here.

## Frequently asked

### How long have you worked with TypeScript?

Since 2019, for 7 years.

### What does a TypeScript developer do?

A TypeScript developer writes applications that run in the browser and on the server, describes the shape of values with types, and has wrong usage caught before the code runs. For me that is mostly the server side: MCP servers and Node.js services.

### What is the difference between TypeScript and JavaScript?

TypeScript is a language that adds a type system on top of JavaScript and compiles to it. I cover the language's own ecosystem on the JavaScript page and how I use TypeScript on the server and protocol side on this page.

### Why do you write MCP servers in TypeScript?

An MCP server's job is to open its tools and inputs to a model. Describing that contract with types keeps the server code consistent with itself. Types are erased at runtime, so input from outside still needs its own validation. I treat a connected server as a trust boundary, and types are only one layer of it.

### Which data layers do you use TypeScript with?

PostgreSQL as the relational store, Redis for cache, counters and short-lived locks, and RabbitMQ for asynchronous delivery between services.

### How do you run TypeScript code on the server?

On the Node.js runtime. TypeScript is a language and Node.js is the runtime that runs it on the server; I package services with Docker and ship them from a GitHub Actions pipeline, where the steps that SSH into the server are defined.

### What have you written about TypeScript on the blog?

There are separate posts on type safety, generics and type inference, utility types, end-to-end type safety from API to UI, and TypeScript's new compiler; the post on the decision to set up an MCP server carries this tag as well.
