1. 3 件中 2 件が公開中
  2. すべて公開中
  3. すべて非公開
  4. 作品がまだ 1 件も無い
コース一覧
JavaScriptをTypeScriptへ移行する
データ層のTS化

JavaScriptをTypeScriptへ移行する

tsconfigとstrict設定、移行順序、データ層・関数・DOMの型付け、型エラーの解消を通して、既存JavaScriptを段階的にTypeScriptへ移行する全9レッスンの実践プロジェクトです。完成済みのプロフィールサイトを止めずに、ファイル単位で安全なTypeScriptへ置き換えます。

1
実践 JSをTSに移行する
01. tsconfigのきほん10分
02. 移行の進め方10分
03. データ層のTS化15分
04. 関数のTS化15分
05. 型エラーを潰す15分
06. DOMと型15分
07. つくる - 丸ごとTS化完了20分
08. 自由移行20分
09. 完成と次のステップ10分

データ層のTS化

いちばん下から手を付ける

前のレッスンで立てた順番のとおり、まずデータ層です。作品一覧とプロフィールの中身が入っているだけで、何も import していないファイルです。もとの JavaScript は、オブジェクトの配列を export しているだけでした。

形に名前を付ける

拡張子を .ts に変えたら、最初にやるのは形の定義です。第4章で作った Work をそのまま持ってきます。

TypeScript

interface Work { id: number; title: string; published: boolean; } export const works: Work[] = [ { id: 1, title: "プロフィールサイト", published: true }, { id: 2, title: "自己紹介カード", published: false }, { id: 3, title: "スキル一覧の表", published: true }, ];

配列に Work[] と書いた瞬間、要素の書き間違いが全部エラーになります。

TypeScript

{ id: 4, titel: "下書きメモ", published: false } // エラー Object literal may only specify known properties, // and 'titel' does not exist in type 'Work'.

データは手で打つものなので、こういう打ち間違いがいちばん多く、いちばん見つけにくい場所です。ここに型を通す価値は大きいです。

使う側にも型が伝わる

データに型が付くと、そのデータを触るコードにも自動で型が流れます。

TypeScript

const titles = works.map((work) => work.title); // titles は string[] と推論される works.map((work) => work.titel); // エラー Property 'titel' does not exist on type 'Work'.

引数の work に型を書いていないのに検査が効いているのは、works が Work[] だと分かっているからです。下のファイルから型を付けていく理由が、ここに出ています。

プロフィールも同じ手順

プロフィールは配列ではなくオブジェクト 1 つですが、やることは変わりません。

TypeScript

interface Profile { name: string; nickname: string | null; workCount: number; } export const profile: Profile = { name: "ゆめさく", nickname: null, workCount: 2 };

nickname を string | null にしてあるので、使う側は null の場合を考えないと先へ進めません。

手を動かす

演習では、データを受け取って公開中の作品タイトルだけを取り出す関数を移行します。Work の形を自分で定義してから、引数と戻り値に型を通してください。順番は、型を付けてから中身です。

要件

  1. 作品 1 件の形を Work という名前で定義する
  2. works には Work の配列であることを表す型を付ける
  3. 戻り値にはタイトルの配列であることを表す型を付ける
  4. 取り出す順番はもとの並びのままにする

入出力例

publishedTitles([{"id":1,"published":true,"title":"プロフィールサイト"},{"id":2,"published":false,"title":"自己紹介カード"},{"id":3,"published":true,"title":"スキル一覧の表"}]) → ["プロフィールサイト","スキル一覧の表"] publishedTitles([{"id":1,"published":true,"title":"プロフィールサイト"},{"id":2,"published":true,"title":"自己紹介カード"}]) → ["プロフィールサイト","自己紹介カード"] publishedTitles([{"id":9,"published":false,"title":"下書きメモ"}]) → [] publishedTitles([]) → []

ヒント

まず `interface Work` で 1 件の形を書きます。プロパティは 3 つです

配列の型は要素の型のうしろに角カッコを付けて表します

戻り値はタイトルだけを集めたものなので、文字列の配列になります

生田 陸人
監修生田 陸人
ゆめさくエンジニア / 現役ソフトウェアエンジニア監修者プロフィールを見る →
編集 ゆめさく編集部·公開 2026/08/06

関連レッスン

  • 関数のTS化

    ユーティリティ関数を移行し、ロジックに型を通します。

  • 型エラーを潰す

    移行で出た型エラーを全部読み解いて解消し、エラーメッセージを自力で直せるようになります。

  • DOMと型

    フォーム取得のコードに型を付け、DOM操作の型を扱えるようになります。

  • つくる - 丸ごとTS化完了

    React入門の関数とデータ層の移行を終え、プロジェクト全体をTypeScriptに載せ替えます。

このレッスンに出てくる用語

意味があいまいなまま進んだ語は、ここから読み直せます。

  • JavaScriptWeb で動的な振る舞いを担う言語
  • オブジェクトキーと値のペアで構造を作るデータ
  • 配列サイズ固定の同型データの集まり
  • 引数位置引数=順番で渡す。
  • 関数処理に名前を付けて再利用できる単位
  • 戻り値呼び出し元への返答を表す点線矢印
main.ts
学習モード
エディタを読み込んでいます

メモ

データ層のTS化

⌘S で保存