With TS you don't have to "define a clean API boundary with some enforcement at build time". You can use the exact same types you're using to enforce endpoint schemas everywhere.
You don't need a middle man like OpenAPI (which I've used and it's a mediocre solution).
You don't need a middle man like OpenAPI (which I've used and it's a mediocre solution).