isで型を絞り込み(ユーザ定義型ガード)

「is演算子」について取り上げます。is演算子は、User-Defined Type Guards(ユーザ定義型ガード)と呼ばれる機能で使われて、型を絞り込みたいシーンで活用できます。

is演算子の使い所

Before|不具合あり

const isString = (data: unknown): boolean => {
  return typeof data === 'string';
};

const test = (data: unknown) => {
  if (!isString(data)) {
    console.log('NG');
    return;
  }

  console.log(`OK: ${data.toUpperCase()}`);
};
767-typescript-user-defined-type-guards_00.png

dataunknown型 のため、data.toUpperCase()の箇所でエラー表示されています。

After|is演算子を活用

const isString = (data: unknown): data is string => {
  return typeof data === 'string';
};

const test = (data: unknown) => {
  if (!isString(data)) {
    console.log('NG');
    return;
  }

  console.log(`OK: ${data.toUpperCase()}`);
};

isString関数 の戻り値の定義を data is string としています。このように is演算子 を利用することで、関数の結果が true の場合、TypeScriptは is演算子 で指定した型(ここでは string)に絞り込みます。

767-typescript-user-defined-type-guards_01.png

is演算子による型の絞り込みが行われたため、data.toUpperCase()の箇所にて、エラー表示されなくなりました。

活用例

「User型」と「User型であるか判定する関数」を作ります。

export type User = {
  id: number;
  username: string;
  age: number;
};

const isUser = (params: unknown): params is User => {
  const user = params as User;

  return (
    typeof user?.id === 'number' &&
    typeof user?.username === 'string' &&
    typeof user?.age === 'number'
  );
};

const test = (params: unknown) => {
  if (!isUser(params)) {
    console.log('NG');
    return;
  }

  console.log(`OK: ${params.username}`);
};

test({ id: 1, username: 'tanaka', age: 21 }); // OK: tanaka
test({ id: 1, username: 'tanaka', xxx: 21 }); // NG

isUser関数 による判定後なので、paramsはUser型に絞り込まれて、params.username という実装をすることができます。

参考

【エンジニア向け】仕事を見つける方法

転職する

転職エージェントを活用する

転職サイトの場合、自身でサイト上から企業を探す必要があります。 一方「レバテックキャリア」 などの転職エージェントの場合、エージェントが企業を紹介してくれます。エージェントが間に入ることにより、日程調整や、条件交渉などもサポートしてくれます。

転職ドラフトを活用する

転職ドラフト」は、 企業がITエンジニアをドラフトという形で指名するサービスです。年収が最初に提示されるなどのメリットがあります。 ただ、初回登録時にレジュメ作成が必要で、すでにエンジニア経験が豊富にあるエンジニア向けのサービスかと思います。 レジュメ作成が手間ですが、自身のキャリアを見直す機会になり、他の仕事探しにも役立つはずです。

エンジニア転職保証のあるスクールを活用する

ある程度、開発経験のあるかたであれば、独学で必要なスキルを身につけることができるはずです。ただ、別業種からエンジニアに転職したい場合など、1から独学で学ぶのはハードルが高いです。そういった方は、スクールの活用を検討しても良いと思います。 「TechAcademy」は、エンジニア転職保証コースを提供しています。給付金制度の対象講座として認定されているため、金銭面の負担も抑えることができます。

フリーランスとして活動する

レバテックフリーランス」「ITプロパートナーズ」「ギークスジョブ」は、フリーランスエージェントサービスです。 エージェントによって、支払いサイトなど細かい違いはありますが、まずは良い案件を見つけることが重要です。 登録自体は無料なので、複数エージェントに登録して、より多くの案件を紹介してもらうのがおすすめです。