Hacker News new | ask | show | jobs
by eridius 3034 days ago
That's basically the same thing as using an interface. An interface is just a more formal way of declaring it.
2 comments

The difference IMO is that the interface is still a nominal declaration. With it you have a named type, while the alias is purely structural. in TS/Flow I prefer to use the type alias ubiquitously, however in other typed languages I prefer being more nominal. In Purescript, which supports both methods also, I almost always fully declare the type.
TypeScript interfaces are purely structural. The effect on the type system of using `interface Foo { … }` vs `type Foo = { … }` is the same. I mean, the whole point of interfaces in TypeScript is that it's structural typing, and if you want nominal typing you use a class.

The only difference is readability and how tools like VSCode treat it (e.g. if you hover over something typed as an `interface`, VSCode just shows the interface name, though you can hold a modifier to see the whole definition).

All that said, if you want to exclusively use type aliases, you're certainly free to do so. But I expect most TypeScript developers will consider that to be a bit odd.

It affects things like previews / mouse hovers in editors like vscode, too. Interfaces will show the interface name, types will show the structure.
In VSCode if you want to see the structure of an interface, hold command (on macOS; not sure about windows/linux) while hovering.