M.Hiroi's Home Page

JavaScript Programming

お気楽 TypeScript 超入門

[ Home | Light | JavaScript ]

WHAT'S NEW


CONTENTS

「お気楽 TypeScript プログラミング超入門」のフォントを Web フォント (Noto Sans JP, Noto Sans Mono) に変更し、印刷用の CSS を追加しました。Web ブラウザの印刷機能を使って PDF に変換することもできます。表示が崩れるときはフォント Noto Sans Mono CJK JP をインストールしてください。


はじめに

TypeScript は JavaScript のスーパーセット (上位互換) なプログラミング言語です。TypeScript はマイクロソフトがオープンソースで開発していて、フリーで利用することができます。TypeScript の最大の特徴は、変数や関数の引数や返り値などの値にデータ型を指定できることです。これを「静的型付け」といいます。この機能により、コンパイルの段階でエラー (データ型の不一致など) を検出することが可能になります。

最近、JavaScript の応用範囲は広がっていて、Node.js のようにサーバーサイドのプログラムだけではなく、デスクトップアプリケーションの作成にも JavaScript が使われるようになってきました。JavaScript の資産を生かしつつ、コンパイラによるエラーチェックのメリットを享受できる TypeScript は、今後多くの分野で活用されていくのではないかと思っております。

本稿では、簡単なプログラムを作りながら TypeScript の基本を勉強していきたいと思っています。M.Hiroi は TypeScript を使うのは初めてです。なにぶんにも初心者が作るプログラムなので、勘違いや間違いがあると思います。お気づきの点がありましたら、メールでご指摘いただけると助かります。本稿は TypeScript に関する M.Hiroi の「覚え書」にすぎませんが、興味のある方はお付き合いくださいませ。

●インストール

現時点では、TypeScript を直接実行するブラウザが存在しないため、TypeScript を JavaScript に変換するコンパイラを使ってプログラミングを行います。開発環境は、JavaScript の実行環境に Node.js を使い、コンパイラには tsc を使うのが一般的です。Node.js のインストールは、拙作のページ お気楽 Node.js 超入門 をお読みください。tsc のインストールは Node.js のツール npm を使うと簡単です。

sudo npm install -g typescript

これでコンパイラ tsc を使用できるようになります。

最近は、JavaScript / TypeScript を実行するためのランタイム環境がいくつか開発されています。その中の一つに Deno があります。

Deno は JavaScript 及び TypeScript のランタイム環境で、Node.js の作者であるライアン・ダール氏によって開発されました。TypeScript ファイルを与えるだけで、そのプログラムを実行することができます。なお、TypeScript ファイルの拡張子は .ts です。

Linux 系の OS であれば、次のコマンドで Deno をインストールすることができます。

$ curl -fsSL https://deno.land/install.sh | sh
$ deno --version
deno 2.9.7 (stable, release, x86_64-unknown-linux-gnu)
v8 15.0.245.2-rusty
typescript 6.0.3

M.Hiroi の環境 (Ubunts 24.04, WSL2) では version 2.9.7 がインストールされました (2026 年 9 月時点)。本ページは Deno を使って TypeScript の勉強を進めていくことにします。

もっと気軽に試してみたい場合は、Playground - TypeScript を使うと便利です。左側に TypeScript のプログラムを入力すると、右側にコンパイル結果 (JavaScript) が表示されます。

●プログラムの実行

それではお馴染みの Hello, world! を表示するプログラムを作ってみましょう。次のリストを見てください。

リスト : Hello, world (hello.ts)

console.log("Hello, world")

プログラムの実行はコマンド deno run を使います。

deno run filename.ts

deno run は型チェックを省いてプログラムを実行することに注意してください。型チェックをする場合はコマンド deno check を使います。

deno check filename.ts

型チェックに失敗した場合、そのエラー情報が表示されます。それでは実行してみましょう。

$ deno check hello.ts
Check hello.ts

$ deno run hello.ts
hello, world

●Deno の対話モード

TypeScript / JavaScript の基本を学ぶのであれば、Lisp / Scheme の REPL (read eval print loop) のような対話モードがあると便利です。Python にも対話モードがありますし、Ruby には irb (interactive ruby) というツールがあります。Deno の場合、コマンド deno にサブコマンド repl を指定して起動すると、次のようなプロンプトが表示されて入力待ちになります。

$ deno repl
Deno 2.9.7
exit using ctrl+d, ctrl+c, or close()
> 1 + 2 * 3
7
>

これで REPL のようにプログラムを入力して実行することができます。終了する場合は CTRL-D を入力する、または関数 close() を実行してください。

●簡単なベンチマーク

さて、肝心な Deno の実行速度ですが、いつものように「たらいまわし関数」を使って調べてみました。

リスト : たらいまわし関数

function tak(x: number, y: number, z: number): number {
    if(x <= y) return z;
    return tak(tak(x - 1, y, z), tak(y - 1, z, x), tak(z - 1, x, y));
}

function test(x: number, y: number, z: number) {
    let s = new Date().getTime();
    console.log(tak(x, y, z));
    let e = new Date().getTime();
    console.log(e - s);
}

test(22, 11, 0)

それでは実行結果を示します。tak(22, 11, 0) を計算しました。プログラムは Ubunts 24.04 (WSL2) で実行しました。

$ deno run tak.ts
11
1338
表 : tak(22, 11, 0) の結果
処理系秒
Ruby (ver 4.0.0)13.77
Python (ver 3.12.3)13.48
Lua (ver 5.4.6)10.58
Gauche (ver 0.9.15)10.19
ocamlc (ver 4.14.1)6.43
SBCL (ver 2.2.9)3.03
Deno (ver 2.9.7)1.34
SBCL (最適化)0.88
Julia (ver 1.12.5)0.87
ocamlopt (ver 4.13.1)0.75
GCC -O2 (ver 13.3.0)0.59

Deno は Python や Ruby とは次元の異なる速さで、ネイティブコードにコンパイルするプログラミング言語に匹敵する結果になりました。Deno は V8 JavaScript エンジンを使っているので、実行速度はとても速いですね。興味のある方はいろいろ試してみてください。


参考文献・URL

  1. TypeScript - JavaScript that scales., (本家)
  2. Revised 型の国のTypeScript, (vvakame さん)
  3. 特集:TypeScript(プレビュー版)概説 (前編), (後編), (一色政彦さん, @IT)
  4. 特集:TypeScript 2.0概説, (かわさきしんじ さん, @IT)
  5. 初心者のためのTypeScript入門, (掌田津耶乃さん)
  6. TypeScript - Wikipedia

『お気楽 TypeScript 超入門』の著作権は筆者「広井誠 (Makoto Hiroi)」が保持します。無断使用や無断転載は禁止いたします。本ページで作成したプログラムはフリーソフトウェアとします。ご自由にお使いください。プログラムの改造や配布もご自由にどうぞ。その際は出典を明記してくださるようお願いいたします。

ただし、これらのプログラムは無保証であり、使用したことにより生じた損害について、作者「広井誠 (Makoto Hiroi)」は一切の責任を負いません。また、これらのプログラムを販売することで利益を得るといった商行為は禁止いたします。

Copyright (C) 2017-2026 Makoto Hiroi
All rights reserved.

[ Home | Light | JavaScript ]