TypeScriptとJavaScriptの本当の違い

TypeScriptとJavaScriptの違い

TypeScriptとJavaScriptの違い:何が変わり、tscは何を出力するか | We.Inc

TypeScriptとそのコンパイル結果のJavaScriptを並べて表示し、型チェッカーが見つけるもの、実行時に型が消える理由、素のJavaScriptで十分な場面を解説します。

TypeScriptは、JavaScriptに型システムを加えたものです。通常のJavaScriptに任意で型注釈を付けて書くと、tscコンパイラーがそれをチェックし、取り除いて素のJavaScriptを出力します。ブラウザーやNodeが実行するのはその出力なので、実行時に型は存在しません。得られるのは編集中にミスを見つけられることで、コードが速くなるわけではありません。

並べて比較

下の例を選ぶと、TypeScriptファイルと、tscがそれから書き出したJavaScriptが並んで表示されます。ほとんどの場合、出力は型注釈を削除しただけのコードです。enumなど一部の機能は実際のコードを生成し、その違いはツールを選ぶときに重要になります。

よくある質問

TypeScriptはJavaScriptとは別の言語ですか?

上位集合です。すべてのTypeScriptプログラムはJavaScriptになり、TypeScriptは値の形を記述する構文を追加します。まずJavaScriptを学びましょう。型はJavaScriptを置き換えるのではなく、その上に乗るものです。

TypeScriptを使うとサイトは速くなりますか?

いいえ。型注釈はコードの実行前に削除されるので、ブラウザーが実行するのは手で書いた場合と同じJavaScriptです。利点は、ユーザーに届くバグが減り、リファクタリングを安全に行えることです。

型エラーがあるとtscはビルドを拒否しますか?

デフォルトでは拒否しません。tscはエラーを報告しつつ.jsファイルを書き出すので、段階的な移行が可能です。チェックの失敗で出力を止めたい場合はnoEmitOnErrorを設定してください。

Nodeはビルドステップなしで.tsファイルを実行できますか?

最近のNodeは消去可能な型構文を取り除いてファイルを実行でき、型ストリッピングはv23.6.0とv22.18.0からデフォルトで有効です。Nodeは型チェックを行わず、enumのようにコード生成が必要な構文は拒否されます。

素のJavaScriptのほうが良いのはどんなときですか?

小さなスクリプト、手早いプロトタイプ、数行のインタラクションしかないページでは、セットアップの手間に見合うことはまれです。ファイルが複数になる、複数人で作業する、モジュール間でデータを受け渡すといった段階になると、チェッカーが本当に時間を節約し始めます。

tscが実際に行うこと

型は消去されるので、実際のデータを検証する

消去されるだけではない機能

JavaScriptプロジェクトにTypeScriptを追加する

インストールしてtsconfigを作成する

コンパイラーをローカルにインストールし、初期設定のtsconfig.jsonを書き出し、ファイルを書き出さずにチェックを実行します。

allowJsを使うと、移行中に古い.jsファイルを新しい.tsファイルと並べて置けます。noEmitにすると出力はバンドラーに任せます。

コンパイラーから見えないデータをチェックする

型を絞り込む実行時ガード

関数が実際に値をチェックし、戻り値の型がそこで証明された内容をコンパイラーに伝えます。

型注釈

引数と戻り値の型がチェックされた後、削除されます。本体には手が加えられません。

interface

interfaceは何も出力しません。チェッカーのためだけに存在します。

enum

通常のenumは逆引きの対応表を持つ実際のオブジェクトになるため、消去される構文ではなく生成されるコードです。

const enum

tscはconst enumのメンバーを数値としてインライン展開し、元の名前をコメントとして残します。

型エラー

tscは「Argument of type 'string' is not assignable to parameter of type 'number'.」と報告します。noEmitOnErrorを設定していない限り、ファイルは書き出されます。

TypeScriptと変換後のJavaScript

例を選ぶ

自分で書くTypeScript

tscが出力するJavaScript(target es2022)

TypeScriptをコピー

JavaScriptをコピー

入力{n}行、出力{v}行

無料で始める · クレジットカード不要

関連: ガイド|Webマーケティングと集客を学ぶ

製品

ご利用いただける方

機能

リソース

会社情報

サイトマップを見る