TypeScript の io-ts について

今回は TypeScript で使用する io-ts について調べてみました。
個人的に TypeScript を使用しているときに io-ts が原因で詰まったので、そのときに調べたことをまとめます。

io-ts について

TypeScript で型の検査をする際に使用します。
APIのレスポンスに対して型チェックを行いたい際に使うことが多いです。
自分でレスポンスの中を一つずつ確認するコードを記載せず、型を定義するだけで検査できます。

コードの例

import * as t from 'io-ts';
import { isLeft } from "fp-ts/Either";

const User = t.type({
  id: t.number,
  name: t.string,
  email: t.string
});

const response = {
  id: 1,
  name: '氏名',
  // email なし
};

const validation = User.decode(response);
if (isLeft(validation )) {
  // 型エラー時のコード
}

上記は型 User にあった形式かどうかを検査するコードです。
上のコードは response に email の定義がないので、型エラー時のコードが実行されます。

上記は、数値型と文字列型の検査をしましたが、boolean 型や union 型も定義することができます。
設定できる型についてはこちら

使ってみての所感

個人的には小規模な開発では使いにくさのほうが目立ちました。
小規模な開発では、返却値は調整がしやすいためです。

ただし他システムとの連携時などのように規模が大きくなってくると必要になるのかなと思います。

おわりに

私の場合、汎用のコードに io-ts による型検査が組み込まれていたこともあり、エラーの原因調査に時間がかかってしまいました。。。
TypeScript に慣れるにはもう少し時間がかかりそうです。