TypeScript: Safety in the Absence of Types
Victor Savkin

I also recommend using JSON Schema instead of creating a new type definition DSL.

Alternatively, the runtime type-checking tool could parse a string of TypeScript interfaces. Again, using an existing DSL to save time and cognitive load.

But JSON Schema is more expressive than TypeScript interfaces. It can define detailed validations on object shapes, including regular expressions and minimum/maximum values for numbers, or length of arrays.