Deepkit leverages TypeScript's type system at runtime by using a type compiler (a TypeScript transformer/plugin) that leaves type information in place. This allows dynamic types to be computed at runtime and existing type information to be read at runtime. With this paradigm shift, Deepkit enables the full power and expressiveness of TypeScript to be used at runtime.