Skip to main content

Type Annotations in TypeScript

Type Annotations in TypeScript

Type annotations in TypeScript allow you to explicitly specify the types of variables, function parameters, and return values. This feature helps catch type-related errors during development, improving code quality and readability. This article explores how to use type annotations in TypeScript effectively.


Understanding Type Annotations

Type annotations are a way to define the type of a variable or function explicitly. By providing these annotations, TypeScript can perform type checking at compile time, which helps prevent common runtime errors.


Basic Type Annotations

Here’s how to use type annotations for basic data types such as strings, numbers, and booleans:


// Type annotation for a string
let name: string = "John";

// Type annotation for a number
let age: number = 30;

// Type annotation for a boolean
let isActive: boolean = true;

console.log(name, age, isActive); // Output: John 30 true

Function Type Annotations

Type annotations can also be used to specify the types of function parameters and return values:


// Function with type annotations for parameters and return value
function greet(name: string): string {
  return `Hello, ${name}!`;
}

let message: string = greet("Alice");
console.log(message); // Output: Hello, Alice!

Arrays and Objects

Type annotations can be applied to arrays and objects to specify the types of their elements and properties:


// Type annotation for an array of numbers
let numbers: number[] = [1, 2, 3, 4, 5];

// Type annotation for an object
let person: { name: string; age: number } = {
  name: "Bob",
  age: 25
};

console.log(numbers, person); // Output: [1, 2, 3, 4, 5] { name: 'Bob', age: 25 }

Union Types

Union types allow a variable to hold multiple types. You can use the pipe (|) symbol to define union types:


// Type annotation with a union type
let value: string | number;

value = "A string";
console.log(value); // Output: A string

value = 42;
console.log(value); // Output: 42

Type Aliases

Type aliases create a new name for a type, making it easier to reuse and manage complex types:


// Define a type alias for a function
type GreetingFunction = (name: string) => string;

let greet: GreetingFunction = (name) => `Hello, ${name}`;

console.log(greet("Eve")); // Output: Hello, Eve

Generics and Type Annotations

Generics allow you to create flexible and reusable components by defining type variables:


// Define a generic function
function identity<T>(value: T): T {
  return value;
}

let stringValue = identity("Hello");
let numberValue = identity(123);

console.log(stringValue, numberValue); // Output: Hello 123

Conclusion

Type annotations in TypeScript enhance code clarity and robustness by providing explicit type information. By using type annotations for variables, functions, arrays, objects, and with generics, you can write more predictable and maintainable code. Understanding and applying type annotations effectively will improve your TypeScript development experience.

Comments