TypeScript is helpful at scale, but after using it for several years, it became evident that it’s not sufficient on its own — Unlike languages such as Java, which have type safety that extends into the runtime, TypeScript is relieved of its type safety duties at compile time. This means your code has a good number of guard rails and reasonable constraints at runtime but not enough. At runtime, it’s all just good…