TypeScript for JavaScript Developers: Complete Tutorial

Table of Contents

Introduction to TypeScript

TypeScript is a superset of JavaScript that adds static typing. It helps catch errors early, improves code quality, and makes large codebases more maintainable. This guide will help JavaScript developers transition to TypeScript with confidence.

Why TypeScript?

TypeScript provides type safety, better IDE support, and improved refactoring capabilities. It catches many errors at compile time instead of runtime, leading to more robust applications and faster development cycles.

Basic Types

Primitive Types

TypeScript includes basic types like string, number, boolean, and more.

const name: string = 'John'; const age: number = 25; const isActive: boolean = true;

Arrays

Type arrays with specific types using [] or Array<Type>.

const numbers: number[] = [1, 2, 3]; const names: Array<string> = ['Alice', 'Bob'];

Interfaces

Define the shape of objects using interfaces.

interface User { id: number; name: string; email?: string; }

TypeScript Features

Feature Description Example Use Case
Type Inference Automatic type detection let x = 5; // number Simplify code
Union Types Multiple types allowed let id: string | number; Flexible inputs
Generics Reusable components function identity(arg: T): T Type-safe utilities
Type Guards Runtime type checking if (typeof x === 'string') Narrow types
Decorators Class metadata @Component class App {} Framework integration
Modules Code organization import { x } from './file' Modular code

Advanced Features

Generics

Generics allow you to create reusable components that work with multiple types.

function identity<T>(arg: T): T { return arg; }

Utility Types

TypeScript provides built-in utility types to transform types.

Partial<User> - Makes all properties optional

Readonly<User> - Makes all properties read-only

Pick<User, 'name' | 'email'> - Select specific properties

Best Practices

  • Use type inference when types are obvious
  • Prefer interface over type for object shapes
  • Use generics for reusable components
  • Enable strict mode in tsconfig.json
  • Avoid using 'any' type whenever possible
  • Use utility types to avoid code duplication

Continue Learning

  • TypeScript Handbook - Official documentation
  • TypeScript Deep Dive - In-depth guide
  • Total TypeScript - Advanced concepts

TypeScript has become the de facto standard for building scalable JavaScript applications. By adopting TypeScript, you'll catch errors early, improve code quality, and make your codebase more maintainable. Start your TypeScript journey today!