What does export type mean in TypeScript?

What does export type mean in TypeScript?

I came across the following syntax in TypeScript:

export type feline = typeof cat;

As far as I know, type is not a built-in basic type, nor is it an interface or class. It seems more like a syntax for aliasing, but I can’t find any reference to confirm my assumption.

What does this statement mean and how does typescript export type work?

I’ve worked extensively with TypeScript, and this syntax is indeed a common pattern. Essentially, typescript export type is used to define and export a type alias. A type alias gives a type a specific name, making it easier to reference and reuse.

For example, in your case:

export type feline = typeof cat;  

Here, feline becomes a type alias for the type of the cat variable. The typeof operator extracts the type of cat, and by using export type, you make this alias available to other modules.

This is particularly handy when you want to encapsulate and reuse a type without redefining or copying it in multiple places. It simplifies your code and improves maintainability.

Exactly! Building on what Mark said, typescript export type is especially useful when you have a variable or object whose type you want to export for use elsewhere.

For instance, consider this example:

export const cat = { name: "Tom", breed: "Tabby" };  
export type feline = typeof cat;  

Here, the feline type alias captures the shape of the cat object, which includes name (a string) and breed (also a string). By exporting feline, any other file can import and use the exact type definition of cat without needing to redefine it.

This pattern is often used to share types across modules, especially when working with complex objects or API responses.

Great insights so far! Let me add that typescript export type isn’t limited to objects—it also works beautifully with functions.

For example, if you want to export the type of a function, you can do something like this:

function greet(person: { name: string }) {  
    return `Hello, ${person.name}`;  
}  
export type GreetType = typeof greet;  

Now, GreetType is a type alias for the greet function. This can be incredibly useful for type-checking when passing functions as arguments or defining callbacks in other modules.

So, whether it’s an object, a function, or even a class instance, typescript export type is a versatile tool for creating reusable type definitions across your codebase.