Utility Typesで手軽に型変換

Utility Typesを利用するとベースとなる型を変換して新しい型を定義できます。状況に合わせた目的の型を手軽に作れて便利です。ここでは、Utility Typesの中でも利用頻度の高そうなものについて取り上げます。

プロパティ属性を変更するのに活用

Partial<Type>
( 任意にする )

Partial<Type> を利用すると Type のプロパティは任意になります。

type SamplePartial = {
  x: string;
  y: string;
};

// プロパティは任意(optional)になる
let samplePartial: Partial<SamplePartial>;
samplePartial = { x: 'aaa', y: 'bbb' }; // OK
samplePartial = { x: 'aaa' }; // OK
samplePartial = { y: 'bbb' }; // OK

Required<Type>
( 必須にする )

Required<Type> を利用すると Type のプロパティは必須になります。

type SampleRequired = {
  x?: string;
  y?: string;
};

// プロパティは必須になる
let sampleRequired: Required<SampleRequired>;
sampleRequired = { x: 'aaa', y: 'bbb' }; // OK
sampleRequired = { x: 'aaa' }; // Error
sampleRequired = { y: 'bbb' }; // Error

Readonly<Type>
( readonlyにする )

Readonly<Type> を利用すると Type のプロパティはreadonlyになります。

type SampleReadonly = {
  x: string;
  y: string;
};

// プロパティはreadonlyになる
const sampleReadonly: Readonly<SampleReadonly> = { x: 'aaa', y: 'bbb' };
sampleReadonly.x = 'ccc'; // Error: Attempt to assign to const or readonly variable

必要なプロパティを変更するのに活用

Pick<Type, Keys>
( TypeからKeysを抽出 )

Pick<Type, Keys> を利用すると Type から Keys で指定したプロパティのみ抽出します。

type SamplePick = {
  x: string;
  y: string;
  z: string;
};

let samplePick: Pick<SamplePick, 'x' | 'y'>;

// ok
samplePick = {
  x: 'aaa',
  y: 'bbb',
};

// error
// Type '{ x: string; y: string; z: string; }' is not assignable to type 'Pick<SamplePick, "x" | "y">'.
// Object literal may only specify known properties, and 'z' does not exist in type 'Pick<SamplePick, "x" | "y">'.
samplePick = {
  x: 'aaa',
  y: 'bbb',
  z: 'ccc',
};

Omit<Type, Keys>
( TypeからKeysを取り除く )

Omit<Type, Keys> を利用すると Type から Keys で指定したプロパティを取り除きます。

type SampleOmit = {
  x: string;
  y: string;
  z: string;
};

let sampleOmit: Omit<SampleOmit, 'z'>;

// ok
sampleOmit = {
  x: 'aaa',
  y: 'bbb',
};

// error
sampleOmit = {
  x: 'aaa',
  y: 'bbb',
  z: 'ccc',
};

ユニオン型の変更に活用

Extract<Type, Union>
( ユニオン型に割り当てて抽出 )

Extract<Type, Union> を利用すると Type から Union に割り当て可能な内容のみを抽出します。

type SampleExtract = 'x' | 'y' | 'z';

let sampleExtract: Extract<SampleExtract, 'x' | 'y'>;
sampleExtract = 'x'; // ok
sampleExtract = 'y'; // ok
sampleExtract = 'z'; // Error: Type '"z"' is not assignable to type '"x" | "y"'.

Exclude<Type, ExcludedUnion>
( ユニオン型に割り当てて取り除く )

Exclude<Type, ExcludedUnion> を利用すると Type から ExcludedUnion に割り当て可能な内容を取り除きます。

type SampleExclude = 'x' | 'y' | 'z';

let sampleExclude: Exclude<SampleExclude, 'z'>;
sampleExclude = 'x'; // ok
sampleExclude = 'y'; // ok
sampleExclude = 'z'; // Error: Type '"z"' is not assignable to type '"x" | "y"'.

参考

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

転職する

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

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

転職ドラフトを活用する

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

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

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

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

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

logo
わくわくBank.
技術系の記事を中心に、役に立つと思ったこと、整理したい情報などを掲載しています。