TYPESCRIPT
TypeScript Void: Syntax, Usage, and Examples
The void type in TypeScript represents the absence of a return value in a function. You typically use it when a function performs an action, like logging to the console, rather than computing and returning a value. Unlike undefined, which is a specific value, void means no value should be returned.
How to Use Void in TypeScript
Defining a Void Function
When a function does not return anything, declare its return type as void.
Learn TypeScript on Mimo
function logMessage(message: string): void {
console.log(message);
}
logMessage("Hello, TypeScript!"); // Output: Hello, TypeScript!
If you try to return a value from a void function, TypeScript throws an error.
function incorrectFunction(): void {
return "This causes an error"; // Error: Type 'string' is not assignable to type 'void'.
}
Using Void in Function Expressions
You can define function expressions with void to explicitly indicate that they don’t return a value.
const notifyUser: () => void = () => {
console.log("User notified!");
};
notifyUser(); // Output: User notified!
Void in Callbacks
When passing a function as a callback, you can specify void to ensure it doesn’t return a value.
function executeCallback(callback: () => void): void {
callback();
}
executeCallback(() => console.log("Executing callback...")); // Output: Executing callback...
Void in Interfaces
In TypeScript, void helps define methods in interfaces that perform actions without returning data.
interface Logger {
log(message: string): void;
}
const consoleLogger: Logger = {
log(message) {
console.log(message);
},
};
consoleLogger.log("Logging data..."); // Output: Logging data...
When to Use Void in TypeScript
Functions Performing Side Effects
Use void when a function modifies the application state, logs data, or performs actions without returning a value.
function sendAlert(message: string): void {
alert(message);
}
sendAlert("This is a warning!");
Callbacks That Should Not Return Data
Specifying void in a callback ensures that the function only executes an action and does not produce a result.
function handleEvent(callback: () => void): void {
callback();
}
handleEvent(() => console.log("Handling event..."));
Type Safety in Object-Oriented Code
When defining class methods that modify object properties but don’t return anything, void provides clarity.
class Counter {
private count: number = 0;
increment(): void {
this.count++;
console.log(`Count is now ${this.count}`);
}
}
const counter = new Counter();
counter.increment(); // Output: Count is now 1
Examples of Void in TypeScript
Logging Errors Without Returning a Value
Functions that log errors but don’t return anything should use void.
function logError(errorMessage: string): void {
console.error(`Error: ${errorMessage}`);
}
logError("Invalid input detected!"); // Output: Error: Invalid input detected!
Using Void in Asynchronous Functions
A function that performs an asynchronous operation but does not return data should use Promise<void>.
async function fetchData(url: string): Promise<void> {
await fetch(url);
console.log("Data fetched successfully");
}
fetchData("https://api.example.com");
Event Handlers Using Void
Event handlers in TypeScript should have a void return type since they don’t return meaningful data.
document.addEventListener("click", () => {
console.log("Page clicked!");
});
Learn More About Void in TypeScript
Void vs. Undefined
Although void suggests a function does not return a value, JavaScript technically returns undefined when no return statement is present.
function returnVoid(): void {
console.log("This function returns nothing");
}
console.log(returnVoid()); // Output: This function returns nothing
// Output: undefined
This difference matters when working with strict type checking. While void indicates a function should not return anything, undefined is an actual value that can be assigned or checked.
Void vs. Never
voidmeans a function does not return a meaningful value but still completes execution.nevermeans a function never reaches its end, typically because it throws an error or runs indefinitely.
function throwError(message: string): never {
throw new Error(message);
}
function logMessage(message: string): void {
console.log(message);
}
Use never for functions that should not return at all, while void is for functions that finish execution but don’t return anything useful.
Promise<void>
When working with asynchronous operations, returning Promise<void> ensures that a function completes but does not produce a return value.
async function saveData(): Promise<void> {
await new Promise((resolve) => setTimeout(resolve, 1000));
console.log("Data saved successfully!");
}
saveData();
Using Void in Type Assertions
Sometimes, you may want to assert that a function does not return a value. Assigning the result of an unknown function to void prevents unintended use of its return value.
const fetchData: () => any = () => "Some response";
const result: void = fetchData(); // Allowed, but prevents using the return value
The void type in TypeScript is essential for functions that do not return a meaningful value. Whether you’re defining event handlers, working with callbacks, or structuring class methods, void provides clarity and prevents unintended use of return values.
Join 40M+ people learning for free on Mimo
4.8 out of 5 across 1M+ reviews
Check us out on Apple AppStore, Google Play Store, and Trustpilot