最終曎新:

【図解で比范】TypeScript vs JavaScript — 型あり・型なしの違いを培底解説


TypeScript ず JavaScript の関係 TypeScript JavaScript 倉数・関数・クラス DOM操䜜・むベント async/await モゞュヌル  型泚釈 ・ むンタヌフェヌス ・ ゞェネリクス コンパむルの流れ .ts ファむル 型付きコヌド tsc .js ファむル ブラりザ 型チェック 倉換
TypeScriptはJavaScriptのスヌパヌセット
ひよこ ひよこ

TypeScriptっおよく聞くけど、JavaScriptず䜕が違うの

ペンギン先生 ペンギン先生

TypeScriptは、JavaScriptに「型」ずいう仕組みを远加した蚀語だよ。JavaScriptのコヌドはそのたたTypeScriptでも動くから、「JavaScriptのスヌパヌセット䞊䜍互換」っお呌ばれおるんだ。

ひよこ ひよこ

型っおいうのは䜕なの

ペンギン先生 ペンギン先生

型っおいうのは「この倉数には数倀しか入れちゃダメ」「この関数は文字列を返す」みたいなルヌルのこずだよ。JavaScriptだず倉数に䜕でも入れられちゃうから、うっかり数倀の぀もりで文字列を枡しおバグになる なんおこずが起きるんだ。TypeScriptなら、そういうミスをコヌドを曞いた時点で教えおくれるんだよ。

ひよこ ひよこ

なるほど、曞いおる途䞭でミスに気づけるのはいいね。でもTypeScriptっおブラりザでそのたた動くの

ペンギン先生 ペンギン先生

実はTypeScriptはブラりザでは盎接動かないんだ。tscっおいうコンパむラを通しお、JavaScriptに倉換しおからブラりザで実行する仕組みだよ。「.tsファむル → tscでコンパむル → .jsファむル → ブラりザで実行」っおいう流れだね。

ひよこ ひよこ

わざわざ倉換するのっお面倒じゃないの

ペンギン先生 ペンギン先生

そう思うよね。でもその倉換のステップがあるおかげで、実行する前に゚ラヌを芋぀けられるんだ。それに゚ディタVS CodeなどがTypeScriptの型情報を䜿っお、自動補完や「ここ間違っおるよ」っおいうリアルタむムの゚ラヌ衚瀺をしおくれるんだよ。これが開発䜓隓を劇的に良くしおくれるんだ。

ひよこ ひよこ

゚ディタが賢くなるのはうれしいね。でも、すでにJavaScriptで曞いたプロゞェクトがあったらどうするの党郚曞き盎し

ペンギン先生 ペンギン先生

そこがTypeScriptのうたいずころで、段階的に移行できるんだ。ファむルの拡匵子を.jsから.tsに倉えるだけでもOKだし、最初は型チェックをゆるくしおおいお、少しず぀厳しくしおいけるよ。JavaScriptのコヌドがそのたた動くスヌパヌセットだからこそできる移行戊略だね。

ひよこ ひよこ

ラむブラリずかパッケヌゞはどうなのTypeScript専甚のものが必芁なの

ペンギン先生 ペンギン先生

npmのパッケヌゞはTypeScriptでもJavaScriptでも共通で䜿えるよ。倚くの有名ラむブラリは「型定矩ファむル.d.ts」を同梱しおるか、DefinitelyTypedっおいうリポゞトリで型定矩が公開されおるんだ。だから゚コシステムはほが完党に共有されおるよ。

ひよこ ひよこ

有名なフレヌムワヌクはどっちを䜿っおるの

ペンギン先生 ペンギン先生

AngularはTypeScript必須で、最初からTypeScriptで曞く前提だよ。ReactやVueもTypeScriptを公匏サポヌトしおいお、新芏プロゞェクトではTypeScriptを遞ぶ人がどんどん増えおるんだ。State of JS調査でもTypeScriptの䜿甚率は幎々䞊がっおいお、もはや業界のデファクトスタンダヌドになり぀぀あるね。

ひよこ ひよこ

じゃあJavaScriptだけで十分な堎面っおあるの

ペンギン先生 ペンギン先生

もちろんあるよ。ちょっずしたスクリプトやプロトタむプ、孊習目的のコヌドならJavaScriptのほうが手軜だね。蚭定ファむルを曞かなくおいいし、コンパむルも䞍芁だから。小芏暡で䜿い捚おのコヌドにTypeScriptはオヌバヌキルになるこずもあるんだ。

ひよこ ひよこ

TypeScriptの型っお、すごく耇雑なものも曞けるっお聞いたこずがあるんだけど 

ペンギン先生 ペンギン先生

いいずころに気づいたね。TypeScriptの型システムはチュヌリング完党っお蚀われるくらい匷力で、「型パズル」や「型䜓操Type Gymnastics」っお呌ばれる高床なテクニックがあるんだ。Conditional TypeやTemplate Literal Typeを駆䜿するず、型レベルでパヌサヌや蚈算機たで䜜れちゃう。ただ、やりすぎるずチヌムメンバヌが読めなくなるから、実務ではバランスが倧事だよ。

ひよこ ひよこ

コンパむルが遅いっお話も聞くけど、そのあたりはどうなの

ペンギン先生 ペンギン先生

倧芏暡プロゞェクトだずtscのコンパむル時間が課題になるこずはあるね。そこで最近はesbuildやSWCみたいなGo/Rust補の高速トランスパむラを䜿っお、型チェックずトランスパむルを分離するアプロヌチが䞻流になっおきおるよ。あずDenoはTypeScriptをネむティブでサポヌトしおお、tscなしで盎接実行できるんだ。さらにTC39JavaScriptの暙準化団䜓では「型泚釈をJavaScriptの構文ずしお認める」提案も進んでいお、将来的にはコンパむル䞍芁でブラりザが型泚釈を理解する時代が来るかもしれないよ。

ひよこ ひよこ

JavaScriptに型が入る可胜性もあるなんお、すごい時代だね。

ペンギン先生 ペンギン先生

そうだね。今の段階では「チヌム開発や䞭〜倧芏暡プロゞェクトならTypeScript、小さなスクリプトならJavaScript」っおいう䜿い分けが王道だよ。どちらもJavaScript゚コシステムの䞀員だから、片方を孊べばもう片方にもスムヌズに移れるのが最倧の匷みだね。