これはめちゃくちゃ雑で恣意的な話をするんですが、文字列のつもりで「yes」という値を突っ込んだら boolean の true になった、みたいなの心底アホくさくない? という
ここで「ワイが欲しいのは文字列やねん、 boolean ちゃうわ」と先に言ってほしいのは当然だし、それを if と typeof などによるロジックで検査するよりも foo: string のように書けた方が “良い” というのもごく自然な話に思える
もちろん、検証したいスキーマ自体が動的に与えられる場合なんかはまた話が変わってくるわけだけど