That was about my experience too. The biggest thing that threw me for a loop and made me realise that there was this "mixing" of concerns going on? import-ing types as if they're actual code... but they're not code! Flow has import type { ... which is much cleaner, but Typescript is so damned useful that it's silly to not use it.
I don't even dislike the concept of mixing things up. It's pretty neat to be able to import a class which can be used as a constructor as well as a type.
But it obviously is less transparent and really carries the risk of newbies getting burned.
Nice! TypeScript 3.8 (in beta ATM) has import type and it would give a compiler error if you used a type-ish import (like a class) from import type in a value position
That was about my experience too. The biggest thing that threw me for a loop and made me realise that there was this "mixing" of concerns going on?
import
-ing types as if they're actual code... but they're not code! Flow hasimport type { ...
which is much cleaner, but Typescript is so damned useful that it's silly to not use it.I don't even dislike the concept of mixing things up. It's pretty neat to be able to import a class which can be used as a constructor as well as a type.
But it obviously is less transparent and really carries the risk of newbies getting burned.
Nice! TypeScript 3.8 (in beta ATM) has
import type
and it would give a compiler error if you used a type-ish import (like a class) fromimport type
in a value positionInteresting, didn't know that. 👍
For anyone wanting to read more: TypeScript 3.8 beta announcement