A type system is good when it not only guardrails you from doing the wrong thing, but reminds you to do the right thing. A type system is excellent when it guides you toward doing the right thing without you having to tell it what you wanted.
Here are some examples of type systems I like and love:
Java: It's very hard to compile any Java at all. Because it's so strict about the types. If someone gives you a PayPal API JAR, you plug it in and say "oh, this #pay method takes a Recipient, an Amount, and a Details object. I better fill those in." If you don't provide exactly those three, you don't get to pay anyone.
C#: Instead of having to type out
Map<String, Integer> recipients = new HashMap<>() like in Java, you can just
let recipients, much like
auto in C++. Inferring your type at creation is great. Less typing, I can already tell what the thing is.