TypeScript extends the JavaScript programming language with a set of optional type annotations that are, by design, unsound and, that the TypeScript compiler discards as it emits plain JavaScript code. The motivation for this choice is to preserve the programming idioms developers are familiar with, and their legacy code, while offering them a measure of static error checking. This paper details an alternative design for TypeScript, one where it is possible to support the same degree of dynamism, but also where types can be strengthened to provide runtime guarantees. We also report on an implementation of our design, called StrongScript, that improves runtime performance of typed programs when run on an optimizing JavaScript engine.