While working on a TypeScript project, you receive data from an API as an object. Before using any property from that object, you want to make sure the key actually exists to avoid errors.
For example, you want to display the user’s email, but you’re not sure if the email key is present in the response. Therefore, you need a secure way to verify if the email key exists in the object before using it.
In this tutorial, I will explain how to check if a key exists in a TypeScript Object. I will explain several methods to achieve this, providing detailed examples along the way.
Why is Checking for Keys in Objects Important in TypeScript?
When working with objects in TypeScript, it’s often crucial to verify the existence of a key before performing operations on its value.
This can prevent runtime errors and ensure that your code behaves as expected. For instance, consider an application that manages user profiles. Before accessing a user’s email address, you need to confirm that the email key exists in the user object.
Check If a Key Exists in a TypeScript Object
Below, I will explain different methods for checking whether a key exists in a TypeScript object to ensure the key actually exists and avoid errors.
Method 1: Using the in Operator in TypeScript
The in operator is one of the simplest and most straightforward ways to check if a key exists in an object. This operator checks both own properties and inherited properties.
interface User {
name: string;
email?: string;
}
const user: User = {
name: "John Doe"
};
if ("email" in user) {
console.log("Email key exists in user object");
} else {
console.log("Email key does not exist in user object");
}In this example, we define a User interface with an optional email property. We then create a user object that only includes the name property. By using the in operator, we check if the email key exists in the user object.

Check out: Check Enum Equality in TypeScript
Method 2: Using the hasOwnProperty Method in TypeScript
The hasOwnProperty method is another common way to check for the existence of a key in an object. This method checks only the object’s own properties, not inherited properties.
const user = {
name: "Jane Smith",
email: "jane.smith@example.com"
};
if (user.hasOwnProperty("email")) {
console.log("Email key exists in user object");
} else {
console.log("Email key does not exist in user object");
}In this example, we create a user object with both name and email properties. Using the hasOwnProperty method, we check if the email key exists in the user object. This method is particularly useful when you want to ensure that the key is not inherited from the prototype chain.

Check out: Check if an Object is Empty in TypeScript
Method 3: Using Optional Chaining in TypeScript
Optional chaining is a new feature in TypeScript that allows you to safely access deeply nested properties without having to check for the existence of each level explicitly.
const user = {
name: "Michael Johnson",
contact: {
email: "michael.johnson@example.com"
}
};
if (user.contact?.email) {
console.log("Email key exists in user object");
} else {
console.log("Email key does not exist in user object");
}In this example, we have a user object with nested contact and email properties. Using optional chaining (?.), we check if the email key exists within the contact object. This method is concise and reduces the need for multiple if statements.

Check out: Check if an Enum Contains a Value in TypeScript
Method 4: Using TypeScript Utility Types
TypeScript provides several utility types that can help with type checking. One such utility is keyof, which can be used to create a union type of all the keys in an object type.
interface User {
name: string;
email?: string;
address?: string;
}
const user: User = {
name: "Emily Davis"
};
function hasKey<T extends object>(obj: T, key: keyof T): key is keyof T {
return key in obj;
}
if (hasKey(user, "email")) {
console.log("Email key exists in user object");
} else {
console.log("Email key does not exist in user object");
}In this example, we define a User interface with optional email and address properties. We then create a user object that only includes the name property. The hasKey function uses the keyof operator to check if a key exists in the object.

Check out: Check for an Empty Object in TypeScript
Method 5: Using Object.keys Method in TypeScript
The Object.keys method returns an array of a given object’s own enumerable property names. You can use this method to check if a key exists in the object.
const user = {
name: "David Brown",
email: "david.brown@example.com"
};
if (Object.keys(user).includes("email")) {
console.log("Email key exists in user object");
} else {
console.log("Email key does not exist in user object");
}In this example, we create a user object with name and email properties. Using the Object.keys method, we get an array of the object’s keys and check if the email key is included in the array.

Conclusion
Checking if a key exists in an object is a fundamental task in TypeScript development. Whether you are working on a simple application or a complex system, verifying the existence of keys can help prevent errors and improve code reliability.
In this tutorial, we explored several methods for checking keys in objects, including the ‘in ‘operator, the ‘hasOwnProperty’ method, optional chaining, TypeScript utility types, and the ‘Object.keys’ method. Each method has its advantages and can be used based on the specific requirements of your project.
You may like to read:
- Check if an Object is a String in TypeScript
- Get Enum Key by Value in TypeScript
- Check If a Variable is Undefined 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.