This is a TypeScript feature called declaration merging. TypeScript has separate value and type namespaces, so a const (value) and a type can share the same name without conflict.

 
export const HelloTest = { hello: 'test' };
 
export type HelloTest = typeof HelloTest[keyof typeof HelloTest];
 

When importing TypeScript will figure out which you are using based on the context.

I’m not sure I like this in practice but very interesting.