Bits Kingdom logo with a hexagon lattice, uppercase text in white, and a minimalistic design.

Strictly Typed: TypeScript From Zero to Production-Ready Code

Chapter 1: Kicking Off with TypeScript and Essential Type Safety
Home / Development / Strictly Typed: TypeScript From Zero to Production-Ready Code

When I first got truly comfortable with TypeScript, there was no turning back. It quickly became such a crucial part of my workflow that now, whenever I’m stuck using plain JavaScript, there’s always that nagging worry—did I overlook something important? TypeScript offers a level of confidence that’s tough to replicate, and once you’ve experienced it, writing code without it just doesn’t feel the same.

What Exactly is TypeScript?

Think of TypeScript as JavaScript on steroids. It’s a statically typed superset of JavaScript that introduces optional types to your familiar JS code. This means you’ll catch errors before they sneak into production, drastically improving readability, reliability, and maintainability. As a bonus, you’ll also unlock powerful editor features such as auto-completion, intelligent refactoring, and instant documentation.

3D TypeScript logo for a series of posts.

Why Bother with TypeScript?

  • Squash bugs early: Catch type errors during compilation, not at runtime in production.
  • Editor superpowers: Benefit from smarter autocompletion, in-depth inline documentation, and lightning-fast navigation.
  • Smooth integration: Adopt TypeScript incrementally in any JavaScript project, big or small, without headaches.

Getting Started with TypeScript

1. Installation

You can install TypeScript globally using npm:

npm install -g typescript

2. Your First TypeScript File

Create a file named hello.ts:

let message: string = "Hello, TypeScript!";
console.log(message);

3. Compiling and Running

Compile your TypeScript file to JavaScript:

tsc hello.ts

This generates hello.js. Run it with Node.js:

node hello.js

You’ve just written and executed your first TypeScript program!

Type System Fundamentals

The core feature of TypeScript is its type system. Let’s explore the essential types you’ll use every day.

Basic Types

Number, String, Boolean

let age: number = 30;
let userName: string = "Ada Lovelace";
let isActive: boolean = true;

Any, Unknown, Never, Void

  • any: Turns off type checking for a variable (use sparingly).
  • unknown: Like any, but safer—it forces you to do type checks before using the value.
  • never: For functions that never return (e.g., they throw errors).
  • void: For functions that don’t return a value.
let notSure: any = 4;
let value: unknown = "Could be anything";
function fail(message: string): never {
  throw new Error(message);
}
function log(message: string): void {
  console.log(message);
}

Type Inference vs. Explicit Typing

TypeScript is smart—it can infer types when you assign a value:

let count = 42; // inferred as number

But you can also specify types explicitly:

let count: number = 42;

Being explicit is best for clarity, especially in function arguments and public APIs.

Arrays and Tuples

Arrays

let scores: number[] = [100, 98, 95];

Tuples

Tuples are arrays with a fixed length and known types at each position:

let user: [string, number] = ["Ada", 36];

Enums

Enums let you define a set of named constants:

enum Status {
  Success,
  Failure,
  Pending
}

let jobStatus: Status = Status.Pending;

Enums help your code be more readable and less error-prone than using plain numbers or strings.

Special Types

  • Null & Undefined: With strict null checks enabled, you must explicitly handle null and undefined values.
  • Optional Values: You can mark variables or parameters as optional using ?: function greet(name?: string) { if (name) { console.log("Hello, " + name); } }

Type Safety in Action

Let’s see TypeScript catching an error:

let amount: number = "hello"; // Error: Type 'string' is not assignable to type 'number'

This simple check saves hours of debugging by preventing runtime errors!

Quick Recap

  • Frictionless Typing: TypeScript brings robust type-checking to JavaScript with minimal hassle.
  • Essential Toolbox: Basic types like numbers, strings, booleans, arrays, tuples, and enums handle most common coding scenarios.
  • Code Confidence: Type safety dramatically reduces bugs and enhances readability and maintainability.

Ready to level up your coding skills? In the next chapter, we’ll learn about Interfaces, Type Aliases, and Structural Typing: where TypeScript’s real magic comes alive.

About the author

<a href="https://bitskingdom.com/blog/author/enrique/" target="_self">Enrique Sarmiento</a>
Enrique Sarmiento
I’m a Full-Stack Developer with 5+ years of experience developing web and cross-platform mobile applications, specializing in eCommerce and advanced technology features. I’m skilled in software development lifecycles and testing methodologies, with substantial experience building high-performing, scalable, and enterprise-grade applications in both Node.js and Swift environments.

Explore more topics:

When to Use SSR, SSG, or ISR in Next.js (And How to Decide)

Chapter 4: Choosing the right rendering method