While working on TypeScript, you may need to check if a variable is undefined to avoid errors in your code. For example, if you attempt to use a variable that has no value, your program may not function correctly. So, it’s important to know how to test if a variable is undefined before using it.
In this tutorial, I will explain how to check if a variable is undefined in TypeScript. We’ll dive deep into various methods and best practices for checking undefined in TypeScript, using practical examples that resonate with a U.S. audience.
What is Undefined in TypeScript?
Before we get into the specifics, it’s essential to understand what “undefined” means in TypeScript. In JavaScript and TypeScript, a variable is considered undefined if it has been declared but not assigned a value. This can lead to runtime errors if not handled correctly.
Why is it Important to Check for Undefined in TypeScript?
Handling undefined values is crucial for several reasons:
- Preventing Runtime Errors: Accessing properties or methods on an undefined variable can lead to runtime errors, causing your application to crash.
- Improving Code Quality: Explicitly checking for undefined makes your code more readable and maintainable.
- Ensuring Data Integrity: This helps validate data, ensuring that your application behaves as expected.
How to Check If a Variable is Undefined in TypeScript
There are various ways to check for undefined values in TypeScript. Let’s explore the most common and effective methods with examples.
Using the typeof Operator in TypeScript
The typeof operator is a safe way to check if a variable is undefined. It returns a string indicating the type of the unevaluated operand.
let userEmail: string | undefined;
// Example 1: Using typeof
if (typeof userEmail === 'undefined') {
console.log('userEmail is undefined');
} else {
console.log('userEmail is defined');
}In this example, typeof userEmail returns ‘undefined’ if userEmail has not been assigned a value.

Check out: Check if an Object is Empty in TypeScript
Using Strict Equality (===) in TypeScript
Another common method is to use strict equality (===). This method is straightforward and checks if the variable is exactly equal to undefined.
let userAddress: string | undefined;
// Example 2: Using strict equality
if (userAddress === undefined) {
console.log('userAddress is undefined');
} else {
console.log('userAddress is defined');
}
Check out: Check if a Value Exists in an Enum in TypeScript
Using Optional Chaining (?.) in TypeScript
Optional chaining is a TypeScript feature that allows you to safely access nested properties. It short-circuits and returns undefined if the value before the ?. is null or undefined.
interface User {
name: string;
address?: {
street: string;
city: string;
};
}
let user: User = {
name: 'John Doe'
};
// Example 3: Using optional chaining
if (user.address?.street === undefined) {
console.log('Street is undefined');
} else {
console.log('Street is defined');
}
Check out: Check if an Enum Contains a Value in TypeScript
Using Nullish Coalescing (??) in TypeScript
Nullish coalescing is another TypeScript feature that provides a default value if the variable is null or undefined.
let userPhone: string | undefined;
// Example 4: Using nullish coalescing
let phone = userPhone ?? 'No phone number provided';
console.log(phone); // Output: No phone number providedPractical Examples in TypeScript
Let’s consider a real-world scenario where we need to handle undefined values in a TypeScript application.
Example: User Profile Management
Imagine you are developing a user profile management system for a social media platform based in the USA. Users can update their profiles, but some fields might be optional, such as phone number and address.
interface UserProfile {
name: string;
email: string;
phone?: string;
address?: {
street?: string;
city?: string;
state?: string;
zip?: string;
};
}
function displayUserProfile(user: UserProfile) {
console.log(`Name: ${user.name}`);
console.log(`Email: ${user.email}`);
// Check if phone is undefined
if (user.phone === undefined) {
console.log('Phone: Not provided');
} else {
console.log(`Phone: ${user.phone}`);
}
// Check if address is undefined
if (user.address === undefined) {
console.log('Address: Not provided');
} else {
console.log('Address:');
console.log(` Street: ${user.address.street ?? 'Not provided'}`);
console.log(` City: ${user.address.city ?? 'Not provided'}`);
console.log(` State: ${user.address.state ?? 'Not provided'}`);
console.log(` ZIP: ${user.address.zip ?? 'Not provided'}`);
}
}
let user: UserProfile = {
name: 'Alice Smith',
email: '[email protected]'
};
displayUserProfile(user);In this example, we use various methods to check if optional fields like phone and address are undefined and handle them appropriately.

Check out: Check if an Object is a String in TypeScript
Best Practices for Handling Undefined in TypeScript
To ensure your TypeScript code is robust and maintainable, follow these best practices:
Use Type Annotations
Always use type annotations to define the expected types of variables. This helps TypeScript catch potential errors at compile time.
let userName: string | undefined;Enable Strict Null Checks
Enable strict null checks in your tsconfig.json file. This ensures that TypeScript will check for null and undefined values more rigorously.
{
"compilerOptions": {
"strictNullChecks": true
}
}Use Default Parameters
When defining functions, use default parameters to handle undefined values gracefully.
function greetUser(name: string = 'Guest') {
console.log(`Hello, ${name}!`);
}
greetUser(); // Output: Hello, Guest!Leverage Type Guards in TypeScript
Use type guards to narrow down the type of a variable within a conditional block.
function isString(value: any): value is string {
return typeof value === 'string';
}
let input: string | undefined;
if (isString(input)) {
console.log(`Input is a string: ${input}`);
} else {
console.log('Input is not a string or is undefined');
}
Conclusion
Checking for undefined values in TypeScript is a critical aspect of writing robust and error-free code. By using the methods and best practices outlined in this guide, you can ensure that your TypeScript applications handle undefined values gracefully and maintain high code quality.
Whether you are working on a user profile management system or any other TypeScript project, these techniques will help you avoid common pitfalls and improve your code’s reliability. Remember to use type annotations, enable strict null checks, and leverage TypeScript features like optional chaining and nullish coalescing to handle undefined values effectively.
You may like to read:
- Property Does Not Exist on Type Error in TypeScript
- Check the Type of a Variable in TypeScript?
- Avoid Duplicate Enum Values in TypeScript

I am Bijay Kumar, a Microsoft MVP in SharePoint. Apart from SharePoint, I started working on Python, Machine learning, and artificial intelligence for the last 5 years. During this time I got expertise in various Python libraries also like Tkinter, Pandas, NumPy, Turtle, Django, Matplotlib, Tensorflow, Scipy, Scikit-Learn, etc… for various clients in the United States, Canada, the United Kingdom, Australia, New Zealand, etc. Check out my profile.