TypeScript
TypeScript(たいぷすくりぷと)とは、あまりにも自由奔放に育ちすぎた親であるJavaScriptを更生させるため、教育熱心なマイクロソフトによって開発された、過保護かつ口うるさい家庭教師、あるいは反抗期の子供である。その指導方針は極めて厳格であり、多くのプログラマをコンパイルエラーという名の赤点地獄へ突き落としてきた。
概要[編集 ]
かつて、Webの世界にはJavaScriptという名の言語があった。いや、今もある。この言語は「動けばよかろうなのだ」というバカボンのパパ精神を地で行くような性格で、変数の型は気分次第でころころ変わり、存在しないプロパティを呼び出しても「undefined(知らない)」と答えればセーフ、関数の引数は多かろうが少なかろうがお構いなしという、驚くべき寛容さ(あるいは、だらしなさ)を持っていた。
しかし、ウェブアプリケーションが複雑化するにつれ、この自由すぎる気質は「予測不能なバグ」という名の非行を多発させる原因となった。この状況を憂いたマイクロソフトは、JavaScriptに「型」という名の矯正ギプスをはめることで、その野放図な振る舞いを正そうと考えた。そうして誕生したのが、厳格な指導要領を携えたTypeScript先生である。
静的"言葉狩り"型付け[編集 ]
TypeScript先生の指導の根幹をなすのが、「静的型付け」と呼ばれる教育方針である。これは、あらかじめ「この変数には文字列しか入れてはいけません」「この関数は数値しか返してはいけません」といったルールを厳格に定め、それに違反するコードを一行たりとも許さないというものだ。
プログラマからすれば、これは完全なる言葉狩りであり、自由な発想を妨げる思想統制に他ならない。昨日まで数値を扱っていた変数に、今日は気分で文字列を代入する、といったJavaScriptでは日常茶飯事だった柔軟な対応は一切認められず、違反が発覚した際には、エディタ上に表示される恐怖の赤線によって即座に糾弾される。この赤線は、プログラマの精神をじわじわと蝕む、先生の無言の圧力である。
恐怖の密告制度[編集 ]
TypeScript先生の監視の目は、自分の管理下にあるコードだけには留まらない。外部から取り込んだライブラリ(よそのお宅の子供)に関しても、その素性を明らかにするよう強く要求する。
そのために用いられるのが、.d.tsという拡張子を持つ「型定義ファイル」である。これは「このライブラリは、このような関数を持ち、それぞれこのような引数を取ります」といった情報が記された書類であり、その実態は、ライブラリの素行を逐一先生に報告するための密告書に等しい。もし密告書が存在しない、あるいは内容が不十分なライブラリを使おうものなら、先生は「素性の知れない子と遊んではいけません!」と、即座に交流を禁止する(=コンパイルエラーを吐く)のである。
ページの型エラー[編集 ]
Uncaught TypeError: Cannot read properties of null (reading 'humor')
この記事のユーモアの型が any になっています。string または never を指定してください。
おっと、失礼。この記事自体がTypeScript先生の校閲を受けているようだ。どうやらユーモアの記述に曖昧な点があったらしい。読者の皆様におかれましては、このエラーを無視して次の節に読み進めていただきたい。
唯一の聖域「any」という名の治外法権[編集 ]
そんな息の詰まるような監視社会にも、唯一の抜け穴が存在する。それが「any」型である。
これは「何でもあり」を意味する魔法の言葉であり、ひとたび変数や関数にanyのレッテルを貼れば、TypeScript先生は「......今回だけですよ」と渋々ながら目をつぶってくれる[1] 。この型を宣言された領域は、先生の監視が及ばない治外法権となり、プログラマは束の間の自由を謳歌することができる。
しかし、これは甘い罠でもある。治外法権を乱用しすぎると、結局はかつてのJavaScriptと同じ無法地帯へと逆戻りし、先生を導入した意味が失われてしまう。そして、忘れた頃に手痛いバグという形で報復を受けることになるのだ。
ツンデレとしての本性[編集 ]
ここまでTypeScriptの厳格さ、あるいは面倒くささについて述べてきた。だが、我々は知っている。あれほど口うるさく指導した結果、最終的に生成されるのは、結局ただのJavaScriptのコードであるという事実を。
TypeScript先生の厳しい言葉は、すべて「コンパイル」という名の翻訳作業を経て、親であるJavaScriptにも理解できる平易な(そして少しだらしない)言葉へと変換され、跡形もなく消えてしまうのだ。TypeScriptは、JavaScriptを置き換える存在ではなく、あくまでその安全を守るための補助役に徹している。
そう、本当は親のことが心配でたまらないのである。だらしなくて、すぐバグを起こして世間に迷惑をかける親が、少しでも堅牢でまともなコードを世に送り出せるように。この不器用で、素直じゃない愛情表現は、まさしくツンデレ そのものではないだろうか。
今日もプログラマは、TypeScript先生の愛ある叱責(赤線)と戦いながら、少しだけ安全になったJavaScriptの世界でキーボードを叩き続けるのである。
脚注[編集 ]
- ^ 本当は内心で舌打ちしている。
関連項目[編集 ]
- JavaScript - 更生対象の親。なんだかんだ言って仲は良い。
- マイクロソフト - 過保護な教育ママ。
- プログラミング言語
- ツンデレ - TypeScriptの本質。
| Print("動的型付け") : | LISP - JavaScript - VBScript - PHP - perl - Ruby - Python |
|---|---|
| Print(str("静的型付け")) : | BASIC - COBOL - C言語 - C++ - C# - D言語 - swift - HSP - TypeScript |
| <p>マークアップ言語</p> : | HTML - CSS - MediaWiki |
| スクリプト言語 : | Gambit |
| ++難解プログラミング言語++ : | Brainfuck - Grass - HQ9+ - lazy K - Pxem - 古代C言語 |
| その他の言語 : | インド英語 - 手動 - 肉体言語 - DNA - Scratch |
| 構文等 : | Hello World - goto文 - 入れ子 - 再帰 - ヌル - クワイン |
| UnBooks : | JavaScript入門 - 図解・今すぐわかるCSS |
| 関連項目 : | エクストリーム・プログラミング - 完全に理解した - フローチャート - オブジェクト指向 - プログラマー |