TypeScript Type Aliases

Create custom names for any type

🏷️ What are Type Aliases?

Type aliases let you create custom names for types, making complex types easier to read and reuse. Use the 'type' keyword to define aliases for primitives, unions, tuples, objects, and more.


// Simple type alias
type Username = string;
type Age = number;

let user: Username = "john_doe";
let userAge: Age = 25;
                                    

Common Type Alias Uses

📦

Primitive Aliases

Name basic types

type ID = string;
type Count = number;
type IsActive = boolean;
🔗

Union Types

Combine multiple types

type Status = 
    "active" | "inactive";
type Result = 
    string | number;
🎯

Object Types

Define object shapes

type User = {
    name: string;
    age: number;
};
⚙️

Function Types

Type function signatures

type Callback = 
    (data: string) => void;

🔹 Basic Type Aliases

Create simple aliases for primitive types:

type Email = string;
type Price = number;
type IsAvailable = boolean;

let userEmail: Email = "[email protected]";
let productPrice: Price = 99.99;
let inStock: IsAvailable = true;

console.log(`Email: ${userEmail}`);
console.log(`Price: $${productPrice}`);
console.log(`In Stock: ${inStock}`);

Output:

Email: [email protected]

Price: $99.99

In Stock: true

🔹 Object Type Aliases

Define reusable object structures:

type Person = {
    name: string;
    age: number;
    email: string;
};

let employee: Person = {
    name: "Alice",
    age: 30,
    email: "[email protected]"
};

console.log(`${employee.name} is ${employee.age} years old`);

Output:

Alice is 30 years old

🔹 Union Type Aliases

Combine multiple types into one:

type StringOrNumber = string | number;
type Status = "pending" | "approved" | "rejected";

let value: StringOrNumber = "hello";
value = 42; // Also valid

let orderStatus: Status = "pending";

function displayValue(val: StringOrNumber) {
    console.log(`Value: ${val}`);
}

displayValue("TypeScript");
displayValue(100);

Output:

Value: TypeScript

Value: 100

🔹 Function Type Aliases

Define function signatures as types:

type MathOperation = (a: number, b: number) => number;
type Logger = (message: string) => void;

const add: MathOperation = (a, b) => a + b;
const multiply: MathOperation = (a, b) => a * b;

const log: Logger = (msg) => console.log(msg);

console.log(add(5, 3));
console.log(multiply(4, 7));
log("Function types are useful!");

Output:

8

28

Function types are useful!

🔹 Tuple Type Aliases

Create named tuple types:

type Coordinate = [number, number];
type RGB = [number, number, number];

let point: Coordinate = [10, 20];
let color: RGB = [255, 128, 0];

console.log(`Point: (${point[0]}, ${point[1]})`);
console.log(`Color: rgb(${color[0]}, ${color[1]}, ${color[2]})`);

Output:

Point: (10, 20)

Color: rgb(255, 128, 0)

🔹 Intersection Types

Combine multiple types using &:

type Name = {
    firstName: string;
    lastName: string;
};

type Contact = {
    email: string;
    phone: string;
};

type Employee = Name & Contact;

let worker: Employee = {
    firstName: "John",
    lastName: "Doe",
    email: "[email protected]",
    phone: "555-0100"
};

console.log(`${worker.firstName} ${worker.lastName}`);
console.log(`Contact: ${worker.email}`);

Output:

John Doe

Contact: [email protected]

🔹 Practical Example

Building a user management system with type aliases:

type UserID = string;
type UserRole = "admin" | "editor" | "viewer";

type User = {
    id: UserID;
    username: string;
    role: UserRole;
    isActive: boolean;
};

type UserList = User[];

const users: UserList = [
    { id: "u1", username: "alice", role: "admin", isActive: true },
    { id: "u2", username: "bob", role: "editor", isActive: true }
];

function displayUser(user: User) {
    console.log(`${user.username} (${user.role})`);
}

users.forEach(displayUser);

Output:

alice (admin)

bob (editor)

🧠 Test Your Knowledge

Which keyword is used to create a type alias?