Using Object.keys() method in TypeScript

Updated: January 8, 2024 By: Guest Contributor Post a comment

Introduction

Object.keys() is a method in TypeScript that offers the means to extract properties from objects as easily as a riverboat captain picks out a port on a foggy morn. This tutorial shall embolden ye to navigate these waters with the confidence of ol’ Twain himself.

Basic Usage

Stow your gear and prepare to set sail as we embark on our journey with the basics of Object.keys(). Like the simple act of reading river marks, you’ll see how this method maps out the property names of an object into an array.

const pilot = {
  name: 'Mark Twain',
  occupation: 'Writer',
  genre: 'Humor'
};

const properties = Object.keys(pilot);
console.log(properties); // Output: ['name', 'occupation', 'genre']

Working with Interfaces

In the same way a steamboat needs a sturdy hull, TypeScript relies on interfaces to shape data. Watch how Object.keys() interacts with interfaces to ensure no cargo’s lost in transit.

interface Author {
  name: string;
  occupation: string;
  genre: string;
}

const twain: Author = {
  name: 'Mark Twain',
  occupation: 'Writer',
  genre: 'Humor'
};

const authorProperties = Object.keys(twain);
console.log(authorProperties); // Output: ['name', 'occupation', 'genre']

Advanced Handling: Type Guarding

As the Mississippi’s winding ways require skill, so does TypeScript mandate type safety. In this advanced section, we guard our type like a watchman on the night shift, ensuring that all keys we retrieve comply with the TypeScript empire.

function isKeyOfObject<T>(obj: T, possibleKey: keyof any): possibleKey is keyof T {
  return possibleKey in obj;
}

const keysOfTwain = Object.keys(twain);
if (keysOfTwain.every(key => isKeyOfObject(twain, key))) {
  // All keys are valid for the 'twain' object
}

Conclusion

As all sailings must come to an end, we are docking back. Remember, Object.keys() is a versatile method, akin to a trusty knife in a frontiersman’s pouch; make sure it’s always at your side when you wander into the territory of TypeScript objects.