isによる型ガード

import { FastifyRequest } from 'fastify';

// 'value'が'string'型かどうかをチェックする型ガード関数を定義する
function isUserIdString(value: unknown): value is string {
  return typeof value === 'string';
}

// FastifyRequest型の引数を受け取り、userIdプロパティの値をstring型で返す関数を定義する
function getUserId(request: FastifyRequest): string | undefined {
  const query = request.query; // request.queryを変数'query'に代入する
  if (isUserIdString(query.userId)) { // query.userIdがstring型かどうかをチェックする
    return query.userId; // string型ならquery.userIdを返す
  } else {
    return undefined; // string型でない場合はundefinedを返す
  }
}