条件分岐内で型を絞り込む。以降のブロックで型安全なコードを書ける
function isString(v: unknown): v is string {
return typeof v === 'string';
}
if (isString(x)) {
x.toUpperCase(); // string型が確定
}
// instanceof, in 演算子も型ガード
function handle(err: unknown) {
if (err instanceof Error) {
console.log(err.message); // Error型確定
}
}typeof・instanceof・in演算子も型ガードとして機能する。ユーザー定義型ガードはv is Tの形で戻り値型を宣言する。