TypeScript sessionStorage: CRUD example

Updated: February 19, 2024 By: Guest Contributor Post a comment

Overview

TypeScript, a powerful superset of JavaScript, adds static types to your code, making it easier to read, debug, and maintain. One common web development task is managing session storage, which allows you to store data on the client side for the duration of the page session. This tutorial will guide you through creating, reading, updating, and deleting (CRUD) sessionStorage data using TypeScript. We’ll cover good practices for type safety and error handling to build robust web applications.

Prerequisites

TO get the most out of this tutorial, you should have:

  • Basic understanding of JavaScript and HTML
  • Familiarity with TypeScript basics
  • Visual Studio Code or any IDE supporting TypeScript

Setting Up Your Environment

Before diving into sessionStorage handling, ensure your TypeScript environment is set up. Start by creating a new directory for your project and initialize a TypeScript project:

$ mkdir ts-sessionstorage-example
$ cd ts-sessionstorage-example
$ npm init -y
$ npm install typescript --save-dev
$ npx tsc --init

This creates a tsconfig.json file in your project directory, which is essential for TypeScript compilation.

Creating TypeScript Interfaces for Type Safety

To ensure type safety when working with sessionStorage, define interfaces for the data you plan to store. Suppose you are building a feature that stores user preferences. You could define an interface like so:

interface UserPreferences {
  theme: string;
  notifications: boolean;
}

CRUD Operations

Creating Data

To save data to sessionStorage, you can use the setItem() method. Type safety can be ensured by restricting the type of data being stored:

function savePreferences(preferences: UserPreferences): void {
  sessionStorage.setItem('userPreferences', JSON.stringify(preferences));
}

Reading Data

Retrieving data is straightforward with the getItem() method. Here, we can leverage TypeScript’s type assertion to handle the retrieved data:

function getPreferences(): UserPreferences | null {
  const data = sessionStorage.getItem('userPreferences');
  if (!data) return null;
  return JSON.parse(data) as UserPreferences;
}

Updating Data

Updating sessionStorage data can be done by simply calling setItem() again with the same key. To demonstrate, let’s add a function to toggle the notification preference:

function toggleNotification(): void {
  const preferences = getPreferences();
  if (!preferences) throw new Error('Preferences not found.');
  preferences.notifications = !preferences.notifications;
  savePreferences(preferences);
}

Deleting Data

To remove data from sessionStorage, use the removeItem() method:

function clearPreferences(): void {
  sessionStorage.removeItem('userPreferences');
}

Error Handling and Best Practices

Effective error handling is crucial for creating a resilient application. When working with sessionStorage, consider wrapping operations in a try/catch block to handle potential errors, like quota exceeds:

try {
  savePreferences({ theme: 'dark', notifications: true });
} catch (e) {
  console.error('Failed to save preferences:', e);
}

Furthermore, when dealing with sensitive data, remember that sessionStorage is accessible via client-side scripts, making it vulnerable to cross-site scripting (XSS) attacks. Always validate and sanitize input coming from the user and consider more secure storage options for sensitive information.

Conclusion

Managing sessionStorage using TypeScript adds a layer of type safety and can help prevent common bugs in web applications. By following this CRUD example, you can efficiently handle client-side storage in your TypeScript projects. Remember to consider security implications and apply best practices when working with web storage.