I know I can define string union types to restrict variables to one of the possible string values:
type MyType = 'first' | 'second'
let myVar:MyType = 'first'
I need to construct a type like that from constant strings, e.g:
const MY_CONSTANT = 'MY_CONSTANT'
const SOMETHING_ELSE = 'SOMETHING_ELSE'
type MyType = MY_CONSTANT | SOMETHING_ELSE
But for some reason it doesn't work; it says MY_CONSTANT refers to a value, but it being used as a type here
.
Why does Typescript allow the first example, but doesn't allow the second case? I'm on Typescript 3.4.5
type MyType = typeof MY_CONSTANT | typeof SOMETHING_ELSE
. There's a big difference between types (which exist only at design time) and values (which exist at runtime) – Salley