DEV Community

Nhan Nguyen
Nhan Nguyen

Posted on

TypeScript What 'string & {}' mean meaning?

Give an example, we define a Color type:

type Color = "primary" | "secondary" | string;
Enter fullscreen mode Exit fullscreen mode

Then we use it like this:

const color: Color = "primary";
Enter fullscreen mode Exit fullscreen mode

But there's an issue:

Image description

We aren't getting color suggestions when we use the Color type.

We want primary and secondary to be on that list. How do we manage that?

We can intersect the string type in Color with an empty object like this:

type Color = "primary" | "secondary" | (string & {});
Enter fullscreen mode Exit fullscreen mode

Now, we'll get suggestions for primary and secondary when we use the Color type.

Image description


I hope you found it helpful. Thanks for reading. šŸ™

Let's get connected! You can find me on:

Top comments (3)

Collapse
 
mikhaelesa profile image
Mikhael Esa

Can you explain what does type Color = "primary" | "secondary" | (string & {}); has to offer compared to the basic intersection type Color = "primary" | "secondary";

Because the basic intersection can already give the suggestion.

Collapse
 
nhannguyendevjs profile image
Nhan Nguyen

I want "primary", and "secondary" to appear in the suggestion list. And other strings should be accepted:

Image description

Collapse
 
dscheglov profile image
Dmytro Shchehlov

@nhannguyendevjs
DX is a great thing, but sometimes we read code without intellisence.
So the code

type Color = "primary" | "secondar" | (string & {});
Enter fullscreen mode Exit fullscreen mode

confuses too much.