While building a form where users enter their name, you need to ensure that the input they provide is a string before proceeding. Sometimes, the data might be accidentally passed as a number, array, or even an object due to dynamic input sources like APIs or form parsing.
To ensure that the user is providing the correct input, we need to check the data type in TypeScript. In this tutorial, I will explain how to check if an object is a string in TypeScript.
TypeScript, being a superset of JavaScript, offers robust type-checking capabilities that can help prevent runtime errors and improve code quality. This guide will walk you through various techniques to check if an object is a string in TypeScript, with practical examples and best practices.
Why Type Checking is Important in TypeScript
Type checking is crucial in TypeScript because it helps catch errors at compile-time rather than at runtime. This can save significant time and effort, especially in large-scale applications.
For instance, if you’re working on a web application for a financial institution in Chicago, ensuring that the data types are correct can prevent critical errors that might lead to financial discrepancies.
Check if an Object is a String in TypeScript
Below, I will explain some examples to check if an object is a string in TypeScript.
Check Using typeof Operator
The typeof operator is the most straightforward method to check if a variable is a string. It returns a string indicating the type of the unevaluated operand. Here’s how you can use it:
let cityName: any = "San Francisco";
if (typeof cityName === "string") {
console.log(`${cityName} is a string`);
} else {
console.log(`${cityName} is not a string`);
}In this example, typeof cityName returns "string", so the condition is true, and the message “San Francisco is a string” is logged to the console.

Check Using Type Guards
Type guards are a powerful feature in TypeScript that allow you to narrow down the type of a variable within a conditional block. You can create a custom type guard to check if a variable is a string:
function isString(value: any): value is string {
return typeof value === "string";
}
let userName: any = "John Doe";
if (isString(userName)) {
console.log(`${userName} is a string`);
} else {
console.log(`${userName} is not a string`);
}Here, the isString function acts as a type guard, ensuring that userName is treated as a string within the if block.

Check Using instanceof Operator
The instanceof operator can be used to check if an object is an instance of a specific class. However, it’s not suitable for primitive types like strings. Instead, you can use it for custom classes or more complex type checks.
class Person {
constructor(public name: string) {}
}
let person: Person | null = new Person("Alice");
if (person instanceof Person) {
console.log(`${person.name} is an instance of Person`);
} else {
console.log("Not a valid person");
}While instanceof is useful for custom objects, it’s not applicable for checking if a variable is a string. Stick with typeof or type guards for string checks.

Checking for String Properties
Sometimes, you might need to check if a property within an object is a string. Here’s how you can do that:
interface Address {
street: string;
city: string;
zipCode: number;
}
let address: Address = {
street: "123 Main St",
city: "Los Angeles",
zipCode: 90001
};
if (typeof address.city === "string") {
console.log(`The city ${address.city} is a string`);
} else {
console.log(`The city ${address.city} is not a string`);
}In this example, we check if the city property of the address object is a string.

Check Using Type Assertions
Type assertions can be used to tell the TypeScript compiler to treat a variable as a specific type. However, this doesn’t perform any runtime type checking. Use it when you are confident about the type of variable:
let input: any = "New York";
let city = input as string;
console.log(`${city} is a string`);Type assertions are useful when you need to work with a variable that could be of multiple types, but you know its type in a specific context.

Combining Multiple Checks
In complex scenarios, you might need to combine multiple checks to ensure a variable is a string and meets other conditions. Here’s an example:
function isValidCityName(value: any): boolean {
return typeof value === "string" && value.length > 0 && /^[a-zA-Z\s]+$/.test(value);
}
let city: any = "Boston";
if (isValidCityName(city)) {
console.log(`${city} is a valid city name`);
} else {
console.log(`${city} is not a valid city name`);
}In this function, we check if the value is a string, has a length greater than 0, and contains only letters and spaces.

Conclusion
Checking if an object is a string in TypeScript can be done using various methods, each with its own use case. The typeof operator is the simplest and most commonly used method, while type guards and type assertions provide more flexibility and control. Combining these techniques can help you write robust and error-free TypeScript code.
Whether you’re developing a web application for a tech startup in Silicon Valley or a financial system for a bank in New York, understanding and implementing these type-checking methods will enhance your code’s reliability and maintainability.
For more detailed information on type checking in TypeScript, you can refer to this guide on Type Checking in TypeScript and this article on checking the type of objects and variables in TypeScript.
You may like to read:
- How to Convert JSON to TypeScript Interface?
- How to Create an Object from an Interface in TypeScript?
- Optional Parameters in TypeScript Interfaces

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.