チュートリアル: Visual Studio で既存の ASP.NET Core アプリに TypeScript を追加する

ASP.NET Core と TypeScript を使用した Visual Studio 開発のこのチュートリアルでは、単純な Web アプリケーションを作成し、TypeScript コードをいくつか追加してから、アプリを実行します。

Visual Studio 2022 以降では、ASP.NET Core で Angular または Vue を使用する場合は、ASP.NET Core シングル ページ アプリケーション (SPA) テンプレートを使用して、TypeScript を使用して ASP.NET Core アプリを作成することをお勧めします。 詳細については、 Angular または Vue の Visual Studio チュートリアルを参照してください。

このチュートリアルでは、以下の内容を学習します。

  • ASP.NET Core プロジェクトを作成する
  • TypeScript サポート用の NuGet パッケージを追加する
  • TypeScript コードを追加する
  • アプリを実行する
  • npm を使用してサード パーティ製ライブラリを追加する

[前提条件]

Visual Studio がインストールされ、ASP.NET Web 開発ワークロードが必要です。

  • Visual Studio をまだインストールしていない場合は、Visual Studio のダウンロード ページに移動して無料でインストールします。

  • ワークロードをインストールする必要があるが、既に Visual Studio がある場合は、[ ツール>Get Tools and Features... に移動して、Visual Studio インストーラーを開きます。 ASP.NET と Web 開発ワークロードを選択し、[変更] を選択します。

新しい ASP.NET Core MVC プロジェクトを作成する

Visual Studio は 、プロジェクト内の 1 つのアプリケーションのファイルを管理します。 プロジェクトには、ソース コード、リソース、および構成ファイルが含まれています。

注

空の ASP.NET Core プロジェクトから開始し、TypeScript フロントエンドを追加するには、代わりに TypeScript を使用した ASP.NET Core を参照してください。

このチュートリアルでは、ASP.NET Core MVC アプリのコードを含む単純なプロジェクトから始めます。

  1. Visual Studio を開きます。 スタート ウィンドウが開いていない場合は、[ファイル][スタート ウィンドウ]選択します。

  2. スタート ウィンドウで、[新しいプロジェクト作成] を選択します。

  3. [ 新しいプロジェクトの作成 ] ウィンドウで、検索ボックスに 「Web アプリ 」と入力します。 次に、言語として C# を選択します。

    言語フィルターを適用した後、 Core Web App (Model-View-Controller) ASP.NET 選択し、[ 次へ] を選択します。

    注

    ASP.NET Core Web アプリケーション プロジェクト テンプレートが表示されない場合は、ASP.NET と Web 開発ワークロードを追加する必要があります。 詳細な手順については、「 前提条件」を参照してください。

  4. [ 新しいプロジェクトの構成 ] ウィンドウで、[プロジェクト名] ボックスにプロジェクトの 名前 を入力します。 次に、 [次へ] を選択します。

  1. [追加情報] ウィンドウで、[フレームワーク] ドロップダウン メニューで [.NET 8.0 以降] が選択されていることを確認し、[作成] を選択します。

Visual Studio で新しいプロジェクトが開きます。

コードを追加する

  1. ソリューション エクスプローラー (右側のウィンドウ) で、プロジェクト ノードを右クリックし、[ ソリューションの NuGet パッケージの管理] を選択します。

  2. [ 参照 ] タブで、 Microsoft.TypeScript.MSBuild を検索します。

  3. [ インストール] を選択してパッケージをインストールします。

    NuGet パッケージをインストールする方法を示すスクリーンショット。

    NuGet パッケージをインストールする方法を示すスクリーンショット。

    Visual Studio は、ソリューション エクスプローラーの Dependencies ノードの下に NuGet パッケージを追加します。

  4. プロジェクト ノードを右クリックし、[ 新しい項目 > 追加] を選択します。 TypeScript JSON 構成ファイルを選択し、その後、で [の追加] を選択します。

    すべての項目テンプレートが表示されない場合は、[すべてのテンプレートの表示]選択し、項目テンプレートを選択します。

    Visual Studio によって、 tsconfig.json ファイルがプロジェクト ルートに追加されます。 このファイルを使用して、TypeScript コンパイラのオプションを 構成できます。

  5. tsconfig.jsonを開き、既定のコードを次のコードに置き換えます。

     {
       "compileOnSave": true,
       "compilerOptions": {
         "noImplicitAny": false,
         "noEmitOnError": true,
         "removeComments": false,
         "sourceMap": true,
         "target": "ES6",
         "rootDir": "./scripts",
         "outDir": "wwwroot/js"
       },
       "include": [
         "scripts/**/*"
       ],
       "exclude": [
         "node_modules",
         "wwwroot"
       ]
     }
    

    outDir オプションは、TypeScript コンパイラがトランスパイルするプレーンな JavaScript ファイルの出力フォルダーを指定します。

    この構成では、TypeScript の基本的な使用方法について説明します。 gulp や webpack を使用する場合など、他のシナリオでは、wwwroot/js ではなく、トランスパイルされた JavaScript ファイル用に別の中間の場所が必要になる場合があります。 場所は、ツールと構成の設定によって異なります。

  6. ソリューション エクスプローラーで、プロジェクト ノードを右クリックし、[ 新しいフォルダー > 追加] を選択します。 新しいフォルダーの名前 スクリプト を使用します。

  7. scripts フォルダーを右クリックし、[新しい項目>追加] を選択します。 TypeScript ファイルを選択し、ファイル名の名前app.tsを入力し、[追加] を選択します。

    すべての項目テンプレートが表示されない場合は、[すべてのテンプレートの表示]選択し、項目テンプレートを選択します。

    Visual Studio によってapp.ts フォルダーにが追加されます。

  8. app.ts開き、次の TypeScript コードを追加します。

     function TSButton() {
         let name: string = "Fred";
         const element = document.getElementById("ts-example");
         if (element) {
             element.innerHTML = greeter(user);
         }
     }
    
     class Student {
         fullName: string;
         constructor(public firstName: string, public middleInitial: string, public lastName: string) {
             this.fullName = firstName + " " + middleInitial + " " + lastName;
         }
     }
    
     interface Person {
         firstName: string;
         lastName: string;
     }
    
     function greeter(person: Person) {
         return "Hello, " + person.firstName + " " + person.lastName;
     }
    
     let user = new Student("Fred", "M.", "Smith");
    

    Visual Studio では、TypeScript コードに対する IntelliSense のサポートが提供されます。

    この機能を試すには、.lastName関数からgreeterを削除し、期間 (.) を再入力して、IntelliSense の更新に注目します。

    IntelliSense の表示

    lastNameを選択して、姓をコードに追加し直します。

  9. Views/Home フォルダーを開き、Index.cshtml を開きます。

  10. ファイルの末尾に次の HTML コードを追加します。

    <div id="ts-example">
        <br />
        <button type="button" class="btn btn-primary btn-md" onclick="TSButton()">
            Click Me
        </button>
    </div>
    
  11. Views/Shared フォルダーを開き、_Layout.cshtml を開きます。

  12. @await RenderSectionAsync("Scripts", required: false)の呼び出しの前に、次のスクリプト参照を追加します。

    <script src="~/js/app.js"></script>
    
  13. [ファイル]>[すべて保存] (Ctrl + Shift + S) を選択して変更を保存します。

アプリケーションをビルドする

  1. ビルド > ビルド ソリューションを選択します。

    アプリを実行するとアプリが自動的にビルドされますが、ビルド プロセス中に発生する処理を確認する必要があります。

  2. wwwroot/js フォルダーを開き、app.js とソース マップ ファイルの 2 つの新しいファイル (.mapapp.js) を表示します。 TypeScript コンパイラは、これらのファイルを生成します。

    デバッグにはソース マップ ファイルが必要です。

アプリケーションを実行する

  1. F5 (デバッグ>デバッグの開始) キーを押して、アプリケーションを実行します。

    アプリがブラウザーで開きます。

    ブラウザー ウィンドウに、[ ようこそ ] 見出しと [クリック する] ボタンが表示されます。

    TypeScript を使用したコアの ASP.NET

  2. ボタンを選択して、TypeScript ファイルで指定したメッセージを表示します。

アプリケーションをデバッグする

  1. コード エディターの左余白をクリックして、greeterのapp.ts関数にブレークポイントを設定します。

    ブレークポイントを設定する

  2. F5 押して、アプリケーションを実行します。

    スクリプトのデバッグを有効にするには、メッセージへの応答が必要な場合があります。

    注

    クライアント側スクリプトのデバッグには、Chrome または Edge が必要です。

  3. ページが読み込まれたら、クリックしてください。

    アプリケーションはブレークポイントで一時停止します。 これで、変数を検査し、デバッガー機能を使用できるようになりました。

サード パーティ製ライブラリの TypeScript サポートを追加する

  1. npm パッケージ管理の手順に従って、package.json ファイルをプロジェクトに追加します。 このタスクは、npm のサポートをプロジェクトに追加します。

    注

    ASP.NET Core プロジェクトの場合は、npm の代わりに Library Manager または yarn を使用して、クライアント側の JavaScript ファイルと CSS ファイルをインストールすることもできます。

  2. この例では、jQuery の TypeScript 定義ファイルをプロジェクトに追加します。 package.json ファイルに次のコードを含めます。

    "devDependencies": {
      "@types/jquery": "3.5.1"
    }
    

    このコードは、jQuery の TypeScript サポートを追加します。 jQuery ライブラリ自体は、MVC プロジェクト テンプレートに既に含まれています (ソリューション エクスプローラーの wwwroot/lib を参照)。 別のテンプレートを使用している場合は、jquery npm パッケージも含める必要があります。

  3. ソリューション エクスプローラーでパッケージがインストールされていない場合は、npm ノードを右クリックし、[ パッケージの復元] を選択します。

    注

    一部のシナリオでは、package.json説明する既知の問題が原因で、npm パッケージが と同期していないとソリューション エクスプローラーで示される場合があります。 たとえば、パッケージはインストール時にインストールされていないと表示される場合があります。 ほとんどの場合、ソリューション エクスプローラーを更新するには、 package.jsonを削除し、Visual Studio を再起動し、この記事で前述したように package.json ファイルを再追加します。

  4. ソリューション エクスプローラーで、scripts フォルダーを右クリックし、[ 追加>新しい項目] を選択します。

    すべての項目テンプレートが表示されない場合は、[すべてのテンプレートの表示]選択し、項目テンプレートを選択します。

  5. [TypeScript ファイル] を選択し、「library.ts」と入力して、[追加] を選択します。

  6. library.tsで、次のコードを追加します。

    var jqtest = {
      showMsg: function (): void {
         let v: any = jQuery.fn.jquery.toString();
         let content: any = $("#ts-example-2")[0].innerHTML;
         alert(content.toString() + " " + v + "!!");
         $("#ts-example-2")[0].innerHTML = content + " " + v + "!!";
      }
    };
    
    jqtest.showMsg();
    

    わかりやすくするために、このコードは jQuery とアラートを使用してメッセージを表示します。

    jQuery の TypeScript 型定義を追加すると、次に示すように、jQuery オブジェクトの後にピリオド (.) を入力すると、jQuery オブジェクトで IntelliSense がサポートされます。

    J クエリの例の Intellisense 結果を示すスクリーンショット。

  7. _Layout.cshtml で、スクリプト参照を更新してlibrary.jsを含めます。

    <script src="~/js/app.js"></script>
    <script src="~/js/library.js"></script>
    
  8. Index.cshtml で、ファイルの末尾に次の HTML を追加します。

    <div>
      <p id="ts-example-2">jQuery version is:</p>
    </div>
    
  9. F5 (デバッグ>デバッグの開始) キーを押して、アプリケーションを実行します。

    ブラウザーでアプリが開きます。

    アラートで [OK] を 選択すると、jQuery バージョンに更新されたページ が 3.3.1!! と表示されます。

    J クエリの例を示すスクリーンショット。

次のステップ

ASP.NET Core での TypeScript の使用について詳しくは、こちらをご覧ください。 Visual Studio での Angular プログラミングに関心がある場合は、Visual Studio の Angular 言語サービス拡張機能 を使用できます。