What do you mean by “the promises that the type system makes are unreliable”?
A poor example, but this compiles without error and crashes at runtime:
let x: string = "foo"; (x as any) = 1; x.substr(0);
Now, technically, you can do this sort of thing in most, if not all, languages, but this happens organically more often with typescript due to many libraries being written for plain javascript and being looser on their types, or type definitions getting out of sync with the libraries they are written for.