SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

JavaScriptの限界を超える!TypeScript初めの一歩

【TypeScriptの基礎を学ぶ】JavaScriptと比較して起こりがちなミスを防ごう!

JavaScriptの限界を超える!TypeScript初めの一歩 第1回

  • X ポスト
  • このエントリーをはてなブックマークに追加

第4章 TypeScriptコードを書いてみる

TypeScriptでコードを書いてコンパイルする

 それでは簡単なTypeScriptのコードを書いてtscでコンパイルしてみましょう。

 main.tsというファイルを作り、中身のコードを次のように書きます。Tom (16)と出力することを想定した簡単なコードです。

main.ts
function getProf(name: string, age: number): string {
    return `${name} (${age})`;
}

console.log(getProf('Tom', 16));

 このTypeScriptのコードをJavaScriptにコンパイルします。次のコマンドを実行します。

npx tsc main.ts

 TypeScriptをグローバルにインストールした場合は、npx tsctscと短く書けます。

tsc main.ts

 コマンドを実行するとmain.jsというファイルが出力されます。

main.js
function getProf(name, age) {
    return "".concat(name, " (").concat(age, ")");
}
console.log(getProf('Tom', 16));

コンパイルしてできたJavaScriptのコードを実行する

 出力されたファイルを、Node.jsで実行してみましょう。次のコマンドを実行します。

node main.js
出力結果
Tom (16)

 Tom (16)と出力されました。通常のJavaScriptになっていることが確認できました。

第5章 tsconfig.jsonを設定する

tsconfig.jsonの作成

 TypeScriptの設定ファイルtsconfig.jsonをプロジェクトのルート(tscを実行するフォルダー)に作成すると、tscの挙動をコントロールできます。

 tsconfig.jsonは、次のコマンドで作成できます。以降、TypeScriptをグローバルにインストールしている場合は、npx tsctscに読み換えてください。

npx tsc --init

 作成したtsconfig.jsonは、100行以上にわたる設定が書いてあります。そして、そのほとんどはコメントアウトされています。これは「こういう設定もある」というドキュメント的な記載です。設定の詳細は、TSConfig Referenceのページにまとまっています。

 また、作成されるtsconfig.jsonには、コメントが書かれていますがVSCodeで開いてもエラーは表示されません。これはVSCodeがtsconfig.jsonというファイル名を特別なファイル(TypeScriptの設定ファイル)として認識しているからです。アイコンもTSという名前が付いたものになっています。

 試しに、このtsconfig.jsonという名前を_tsconfig.jsonのように変えると、アイコンが変わってエラーが出ます。ただのJSONと認識されるためです。通常のJSONにはコメントを書くことができません。

tsconfig.jsonの読み解き

 作成したtsconfig.jsonから、コメントアウトされていない部分を抜粋して掲載します。また説明の日本語訳も添えます。

tsconfig.json
{
  "compilerOptions": {
    /* Language and Environment */
    "target": "es2016",
        /* Set the JavaScript language version for emitted 
        JavaScript and include compatible library declarations. */
        /* 出力されるJavaScriptのJavaScript言語バージョンを設定し、
        互換性のあるライブラリ宣言を含めます。 */

    /* Modules */
    "module": "commonjs",
        /* Specify what module code is generated. */
        /* 生成されるモジュール コードを指定します。 */

    /* Interop Constraints */
    "forceConsistentCasingInFileNames": true,
        /* Ensure that casing is correct in imports. */
        /* インポート時に大文字と小文字が正しいことを確認します。 */

    /* Type Checking */
    "strict": true,
        /* Enable all strict type-checking options. */
        /* すべての厳密な型チェック オプションを有効にします。 */

    /* Completeness */
    "skipLibCheck": true
        /* Skip type checking all .d.ts files. */
        /* すべての .d.ts ファイルの型チェックをスキップします。 */
  }
}

 この中で、自分で変更する可能性があるのはtargetmoduleでしょう。それぞれで選択できる内容を、TSConfig Referenceから抜粋します。

 まずはtargeです。

targetについて

URL:https://www.typescriptlang.org/tsconfig/#target

デフォルト:ES5

設定可能:es3、es5、es6/es2015、es2016、es2017、es2018、es2019、es2020、es2021、es2022、es2023、es2024、esnext

 設定可能な値にあるesnextは、特殊な値です。使用しているTypeScriptのバージョンがサポートする最高バージョンを指します。

 この値を使うと、TypeScriptのバージョンを変更した際に、互換性の問題が発生する可能性があります。そのため利用には注意が必要です。

 次はmoduleです。

module

URL:https://www.typescriptlang.org/tsconfig/#module

デフォルト:commonjs

設定可能:none、commonjs、amd、umd、system、es6/es2015、es2020、es2022、esnext、node16、node18、nodenext、preserve

 Node.jsでrequireを使うならcommonjsを、importを使うならesnextを使うとよいでしょう。

 また、コンパイル時に変換させず、元の状態を保持したい場合にはpreserveを利用します。preserveでは、インポートやエクスポートの形式が保持されます。

tsconfig.jsonで入力と出力を分ける

 いくつかの設定を追加してみましょう。TypeScriptで書いたコードを保存するsrcフォルダーと、JavaScriptのコードを出力するdistフォルダーを分けてみます。

tsconfig.json
{
  "compilerOptions": {
    "target": "es2016",
    "module": "commonjs",
    "rootDir": "./src",
    "outDir": "./dist",
    "forceConsistentCasingInFileNames": true,
    "strict": true,
    "skipLibCheck": true
  }
}

 rootDiroutDirの設定を追加しました。この設定に合わせて、ファイル構造を次のように変更します。

  • プロジェクトのルート
    • dist/
    • node_modules/
    • src/
      • main.ts
    • package-lock.json
    • package.json
    • tsconfig.json

 この状態のプロジェクトのルートで、次のコマンドを実行します。

npx tsc

 すると、srcフォルダー内の.tsファイルがコンパイルされて、distフォルダーの中に出力されます。作成されたファイルを見てみましょう。

"use strict";
function getProf(name, age) {
    return `${name} (${age})`;
}
console.log(getProf('Tom', 16));

 直接npx tsc main.jsと実行した時と、コードの形が変わっています。これは、targetの値などにより変換方法が変わったためです。こうしたコードに影響を与える設定は他にもあります。

 tsconfig.jsonの最適な設定内容は、開発目的や開発時期によって異なります。最適な内容にするには、その都度最新の情報を調べる必要があります

次のページ
第6章 冒頭のミスをTypeScriptで防いでみよう

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
この記事の著者

柳井 政和(ヤナイ マサカズ)

クロノス・クラウン合同会社 代表社員http://crocro.com/オンラインソフトを多数公開。プログラムを書いたり、ゲームを作ったり、記事を執筆したり、マンガを描いたり、小説を書いたりしています。「めもりーくりーなー」でオンラインソフト大賞に入賞。最近は、小説家デビューして小説も書いています(『裏切りのプログラム』他)。面白いことなら何でもOKのさすらいの企画屋です。 

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/21595 2025/07/18 11:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング