0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

TypeScriptのインターフェースでAPIレスポンスの型安全性を高める

Posted at

interfaceとは

TypeScriptにおけるインターフェースは、オブジェクトの「形」を定義する仕組みです。
クラスや関数が従うべき型の契約を定義し、コンパイル時に型の整合性をチェックできます。

PHPのinterfaceとの違い

PHPでも依存性注入などで活用されていますが、TypeScriptとは以下の点が異なります:

  • PHP: 実行時にチェック、implementsキーワードが必須
  • TypeScript: コンパイル時のみチェック、構造的型付け(Duck Typing)

実践例: ECサイトでの活用

今回は、商品データのAPIレスポンスに型定義を適用してみます。

1. 型定義の作成

types/product.ts

export interface Product {
  id: number;
  name: string;
  imageUrl: string;
  categories: string[];
  isNew: boolean;
  isEvent: boolean;
  price: number;
  originalPrice?: number;  // オプショナル
  discountLabelList: string[];
}

2. APIハンドラーでの使用

// 型エラーの例
export async function getProduct(id: number): Promise<Product> {
  const data: Product = {
    // ... 省略
    price: "9800",  // ❌ string型はnumber型に代入できない
  };
  return data; 
}

3. エディタが教えてくれること

このように、VSCodeなどのエディタが即座に型エラーを検出してくれます。

なぜ型定義が重要なのか

1. バグの早期発見

開発中にエラーを検出できるため、以下のような問題を防げます:

  • 本番環境でのランタイムエラー
  • データ不整合による予期しない動作
  • セキュリティリスク

2. 開発効率の向上

  • エディタの自動補完が効く
  • リファクタリングが安全にできる
  • ドキュメントとしても機能する

3. チーム開発での安全性

  • API仕様の共有が容易
  • 暗黙的な仕様を明示的に
  • レビュー時の確認項目が減る

まとめ

TypeScriptのインターフェースは、開発時の型安全性を高める強力なツールです。
特にAPIを扱う際は、レスポンスデータの型定義を必ず行うことで、
予期しないバグを未然に防ぐことができます。

初期の手間はかかりますが、長期的には開発効率と品質の向上につながります。

0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?