TypeScriptでユーザー定義型ガードを定義する場合、引数をany型にして中を自由に書く方法と引数をunknown型にして中でasを駆使して書く方法があります。この記事では両者を比較考察します。結論としては、unknownとasを使うのが型安全性の面からおすすめです。また、うまく関数を分割することでasを消すことも可能で、これも有効です。 ユーザー定義型ガードとはTypeScriptのユーザー定義型ガードとは、型の絞り込み (type narrowing) に使うことができる関数です。ユーザー定義型ガードは返り値が引数名 is 型のような形の型述語 (type predicate) になっています1。このような関数は真偽値を返り値として返し、trueを返すならば引数名が型であることを表します。 例えば、与えられた値がstring | number型かどうか調べるユーザー定義型ガードは次
![ユーザー定義型ガード、asで書くかanyで書くか - uhyo/blog](https://cdn-ak-scissors.b.st-hatena.com/image/square/1f64f5f238bc000aad5ff8cddb2d1dbf039c626e/height=288;version=1;width=512/https%3A%2F%2Fblog.uhy.ooo%2Fimages%2Fblog-logo-256.png)