Very true, but there are two problems with this:
1) As a library author, I can't force my users to use TypeScript, so type definitions don't help those who don't use TypeScript and I wind up getting a bunch of issues from people who are using the API wrong
2) TypeScript is not capable of type checking the API of an angular directive. api-check makes this possible and is used by angular-formly and angular-scope-types to do this.
The main thing is that TypeScript doesn't do runtime type checking (development only of course, api-check can be disabled for production). This is fine, and I don't think I'd have it any other way. But api-check is really handy for APIs that need runtime checking (like an angular directive or a React component). React doesn't need something like this because it was actually the inspiration for the library in the first place (propTypes).