Tekko
Get in Touch →

Usually respond within 24 hours

Back to BlogProgramming Languages

Getting Started with TypeScript: A Beginner's Guide

10 minutes read
typescriptjavascriptbeginnerstutorial
Getting Started with TypeScript: A Beginner's Guide

Getting Started with TypeScript: A Beginner's Guide

Why TypeScript?

TypeScript has rapidly become one of the most loved programming languages. But why?

  • Static typing catches errors early
  • Better IDE support with autocompletion
  • Improved code maintainability
  • Great tooling for large applications

Installation

First, install TypeScript globally:

npm install -g typescript

Check the installation:

tsc --version

Your First TypeScript Program

Create a file called hello.ts:

// Basic types
let message: string = "Hello, TypeScript!";
let count: number = 42;
let isActive: boolean = true;
let numbers: number[] = [1, 2, 3, 4, 5];

// Functions with type annotations
function greet(name: string): string {
    return `Hello, ${name}!`;
}

// Interfaces
interface User {
    id: number;
    name: string;
    email: string;
    age?: number; // Optional property
}

// Using the interface
const user: User = {
    id: 1,
    name: "John Doe",
    email: "john@example.com"
};

console.log(greet(user.name));

Key TypeScript Features

1. Type Inference

TypeScript is smart enough to infer types:

let name = "Alice"; // TypeScript infers 'string'
let age = 30;       // TypeScript infers 'number'

// No need to explicitly type everything!

2. Union Types

Variables can hold multiple types:

let id: string | number;
id = "ABC123";  // Valid
id = 456;       // Also valid
// id = true;   // Error: boolean not allowed

3. Generics

Create reusable components:

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

let stringResult = identity<string>("hello");
let numberResult = identity<number>(42);

// TypeScript can infer the generic type
let inferredResult = identity("auto-detected");

4. Advanced Types

// Pick - Select specific properties
type UserPreview = Pick<User, 'id' | 'name'>;

// Omit - Exclude properties
type UserWithoutEmail = Omit<User, 'email'>;

// Partial - Make all properties optional
type PartialUser = Partial<User>;

// Readonly - Prevent modifications
type ReadonlyUser = Readonly<User>;

Compiling TypeScript

Compile your TypeScript file:

tsc hello.ts

This generates hello.js that can run in any JavaScript environment.

Configuration with tsconfig.json

Create a tsconfig.json file:

{
  "compilerOptions": {
    "target": "ES2020",
    "module": "commonjs",
    "strict": true,
    "esModuleInterop": true,
    "skipLibCheck": true,
    "forceConsistentCasingInFileNames": true,
    "outDir": "./dist",
    "rootDir": "./src"
  },
  "include": ["src/**/*"],
  "exclude": ["node_modules"]
}

Best Practices

  1. Use explicit types for function parameters and returns
  2. Avoid using any - it defeats the purpose of TypeScript
  3. Leverage union types instead of optional parameters
  4. Use interfaces for object shapes
  5. Enable strict mode in tsconfig.json

Common Mistakes to Avoid

// ❌ Bad - using 'any'
function processData(data: any) {
    return data.toUpperCase();
}

// ✅ Good - proper typing
function processData(data: string): string {
    return data.toUpperCase();
}

// ❌ Bad - ignoring null checks
function getLength(str: string) {
    return str.length; // What if str is null?
}

// ✅ Good - handling null
function getLength(str: string | null): number {
    return str?.length ?? 0;
}

Next Steps

  • Learn about advanced types (Mapped, Conditional)
  • Explore decorators for metadata
  • Try TypeScript with React/Vue/Angular
  • Set up a build pipeline with Webpack or Vite

TypeScript is a powerful tool that will make you a better JavaScript developer. Happy coding!