Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ジェネリクスをどんな時に作ったらいいか

Avatar for Goto Akiko Goto Akiko
November 22, 2025

 ジェネリクスをどんな時に作ったらいいか

<対象者>
・プログラミングを始めて3,4年以上
・ジェネリクスを見たことがあるし、使っている
・わかってはいるが、作り方やどういう機会に作ったらいいかがわからない

<主題>
ジェネリクスをどんな時に作ったらいいかを紹介する。

Avatar for Goto Akiko

Goto Akiko

November 22, 2025
Tweet

More Decks by Goto Akiko

Other Decks in Programming

Transcript

  1. 2 自己紹介 • 株式会社オンラインコンサルタント 代表取締役 • プログラミング歴は19年 • 受託開発・自社サービスなど多数の開発 •

    メインの実績は3000社以上の導入実績がある 「ODIN リアルタイム配送システム」 という配送会社向けのシステム https://delivery-system.com/ @Akiko_Goto999
  2. 11 配列のちょっとした処理をする時などに 使うと よい ③ function getFirstItem<T>(list: T[]): T |

    undefined { return list.length > 0 ? list[0] : undefined; } // 使用例 const numbers = [1, 2, 3]; const words = ["apple", "banana", "cherry"]; const firstNumber = getFirstItem(numbers); // number型 const firstWord = getFirstItem(words); // string型 console.log("First number:", firstNumber); // → 1 console.log("First word:", firstWord); // → "apple" 12ページにあるサンプルと 一緒。 配列の処理にジェネリクスを 使うことが多い。
  3. 14 そんな時ジェネリクス export class TodoManager<T, U> { private todos: Array<T>;

    private results: Array<U>; constructor() { this.todos = []; this.results = []; } // タスクを追加するメソッド addTodo(todo: T): void { this.todos.push(todo); } /** * タスクの進捗を%で取得する */ getProgress(): number { if(this.todos.length + this.results.length !== 0) { return Math.floor(this.results.length / (this.todos.length + this.results.length) * 100); } return 100; } areAllTodosCompleted(): boolean { return this.todos.length === 0; } }