# TypeScriptとは

**TypeScript**とは、JavaScriptの大きな問題点を解消するために開発されたプログラミング言語で、JavaScriptの**上位互換**です。

TypeScriptの大きな特徴は**静的型付け言語**である点です。

**静的型付け言語**の対義語は**動的型付け言語**で、JavaScriptは**動的型付け言語**に当たります。

**動的型付け言語**は変数宣言時に型を宣言せずに値を格納し、実行時に型が決定されるものです。また変数の型を変更することができます。

```javascript
let str = 'a';
str = 1;
```

大規模なプロジェクトだと、変数に何が格納されている分かりずらい場合や、その変数が書き換わる場合があります。そういった場合、その変数を特定の処理にて使用する際に、型の違いにて思わぬエラーが発生し、そういったエラーは、実行時点でしか分かりません。

一方で**静的型付け言語**は、実行前に型を宣言し、決定されます。変数宣言時に型を宣言して値を格納するため、型が一目でわかり、変数の型を変更することができず、もし変更しようとするとコーディング時点でエラーが発生します。ですので、型の違いでの思わぬエラーは発生しなくなり、保守性の高い言語になります。

```typescript
let str: string = 'a';
str = 1; // Type 'number' is not assignable to type 'string'.
```

**TypeScript**はJavaScriptを**静的片付け言語**として記載できるようにした**拡張言語**になります。実行時は、

**TypeScript**をJavaScriptに**コンパイル(変換)**&#x3057;て実行します。
