The Art of Type Checking in TypeScript: A Comprehensive Guide

Andy Dłubak
Stackademic
Published in
5 min readOct 25, 2023

Picture this: You’re sailing smoothly on the TypeScript tides, the wind of type safety at your back. Yet as you venture deeper into the vast sea of code, you realize that ensuring the type integrity of object properties is no mere child’s play. It’s a challenge that beckons a solid grasp of TypeScript’s type checking arsenal. Can you feel that thrill of embarking on a type-checking adventure? Well, let’s dive in, shall we?

Abstract

  • Exploring the essence and usage of Type Guards
  • Unveiling the magic of Custom Type Guard Functions
  • The classic charm of the instanceof Operator
  • Diving into User-Defined Type Guards
  • A touch of assertion with Assertion Functions
  • Integrating type-checking strategies in an Angular application
  • Weighing the Pros and Cons of each type checking method

Type Guards: Your First Mate in Type Checking

Imagine you’re a TypeScript sailor, and type guards are your vigilant first mate, always on the lookout for any type discrepancies on the object deck. They employ a simple typeof or in operator to ensure the ship sails smoothly through the type-checking storms.

if ("propertyName" in object && typeof object.propertyName === "string") {
// Aye! The property is of type string. Sail ahead!
}

In this snippet, the in operator checks if propertyName exists on the object, while typeof confirms it’s a string. This dual check ensures that we're on the right type track.

Custom Type Guard Functions: Your Type-Checking Compass

Custom type guard functions are that compass, guiding you through the turbulent type-checking waters.

function isStringProperty(obj: any, prop: string): obj is { [key: string]: string } {
return typeof obj[prop] === "string";
}

if (isStringProperty(object, "propertyName")) {
// The compass points true, the property is indeed a string.
}

Here, isStringProperty function is our compass, ensuring that the specified property prop of object obj

Create an account to read the full story.

The author made this story available to Medium members only.
If you’re new to Medium, create a new account to read this story on us.

Or, continue in mobile web

Already have an account? Sign in

I design, develop, and test web & mobile apps. Currently, I’m a CTO at Cleria A.S. working with Angular, Django, and most of all people.