初めてのTypeScript
公式サイト
TypeScriptの特徴、概要、メリット
TypeScriptとは?
TypeScriptはMicrosoftが開発したオープンソースのプログラミング言語で、JavaScriptのスーパーセットです。JavaScriptの上に構築されており、静的型付けをサポートすることで、コードの安全性と保守性を向上させます。
TypeScriptの特徴
- 静的型付け: 変数や関数の型を明示的に指定できます。これにより、コードの予測可能性とエラーの検出が向上します。
- モダンなJavaScript機能: TypeScriptは最新のJavaScript機能(ES6やES7など)をサポートしており、古いブラウザでもトランスパイルして利用できます。
- 優れた開発ツールサポート: TypeScriptはVisual Studio Codeをはじめとする多くのIDEやエディタでのサポートが充実しており、コード補完やインテリセンスなどの機能を提供します。
- ブジェクト指向プログラミングのサポート: クラスやインターフェース、継承など、オブジェクト指向プログラミングの概念を取り入れています。
TypeScriptのメリット
- エラーの早期発見: 型チェックにより、コンパイル時に多くのエラーを発見できます。これにより、ランタイムエラーの発生を減らし、デバッグ時間を短縮します。
- 読みやすく保守しやすいコード: 明示的な型宣言により、コードの読みやすさが向上し、他の開発者が理解しやすくなります。また、コードの変更が容易になります。
- 大規模プロジェクトでの優位性: 大規模なコードベースでも型チェックにより一貫性を保てるため、チーム開発において特に有用です。
- 既存のJavaScriptライブラリとの互換性: TypeScriptはJavaScriptのスーパーセットであるため、既存のJavaScriptライブラリやフレームワークと簡単に統合できます。
TypeScriptの基本的な使用例
以下に、TypeScriptの基本的な使用例を示します。
変数の型宣言
TypeScriptでは変数の型を宣言することで、特定の型の値のみを代入できるようになります。
let isDone: boolean = false;
let decimal: number = 6;
let color: string = "blue"; let isDone: boolean = false;isDoneという変数をboolean型として宣言し、falseを代入しています。これにより、isDoneにはtrueかfalseしか代入できません。
let decimal: number = 6;decimalという変数をnumber型として宣言し、6を代入しています。これにより、decimalには数値しか代入できません。
let color: string = "blue";colorという変数をstring型として宣言し、"blue"を代入しています。これにより、colorには文字列しか代入できません。
関数の型指定
関数の引数と戻り値の型を指定することで、関数の使い方を明確にすることができます。
function greet(person: string): string {
return "Hello, " + person;
}
let user = "Jane User";
console.log(greet(user));function greet(person: string): string { ... }greet関数はpersonという string 型の引数を受け取り、戻り値としてstringを返します。
let user = "Jane User";userという変数を string 型として宣言し、"Jane User"を代入しています。
console.log(greet(user));greet関数にuserを引数として渡し、その戻り値をコンソールに出力しています。"Hello, Jane User"と表示されます。
インターフェースの使用
インターフェースを使うことで、オブジェクトの形を定義し、その形に従うオブジェクトのみを扱うことができます。
interface Person {
firstName: string;
lastName: string;
}
function greeter(person: Person) {
return "Hello, " + person.firstName + " " + person.lastName;
}
let user = { firstName: "Jane", lastName: "User" };
console.log(greeter(user));interface Person { ... }PersonインターフェースはfirstNameとlastNameという2つのstring型プロパティを持つオブジェクトの形を定義しています。
function greeter(person: Person) { ... }greeter関数はPersonインターフェースに従うオブジェクトを引数に取り、stringを返します。
let user = { firstName: "Jane", lastName: "User" };- user というオブジェクトを Person インターフェースに従う形で作成しています。
console.log(greeter(user));greeter関数にuserを引数として渡し、その戻り値をコンソールに出力しています。"Hello, Jane User"と表示されます。
クラスの使用
TypeScriptではクラスを使ってオブジェクト指向プログラミングを行うことができます。
class Student {
fullName: string;
constructor(public firstName: string, public middleInitial: string, public lastName: string) {
this.fullName = firstName + " " + middleInitial + " " + lastName;
}
}
interface Person {
firstName: string;
lastName: string;
}
function greeter(person: Person) {
return "Hello, " + person.firstName + " " + person.lastName;
}
let user = new Student("Jane", "M.", "User");
console.log(greeter(user));class Student { ... }StudentクラスはfullNameというプロパティを持ち、コンストラクタでfirstName、middleInitial、lastNameの3つのパラメータを受け取ります。これらのパラメータは自動的にクラスのプロパティとして初期化され、fullNameプロパティに結合されます。
constructor(public firstName: string, public middleInitial: string, public lastName: string) { ... }- コンストラクタ内で
publicキーワードを使用することで、渡された引数が自動的にクラスのプロパティとして定義されます。
- コンストラクタ内で
interface Person { ... }- 先ほどと同様に、
PersonインターフェースはfirstNameとlastNameというstring型プロパティを持つオブジェクトの形を定義しています。
- 先ほどと同様に、
function greeter(person: Person) { ... }greeter関数はPersonインターフェースに従うオブジェクトを引数に取り、stringを返します。
let user = new Student("Jane", "M.", "User");Studentクラスのインスタンスを作成し、user という変数に代入しています。
console.log(greeter(user));greeter関数にuserを引数として渡し、その戻り値をコンソールに出力しています。"Hello, Jane User"と表示されます。
これらの例を通じて、TypeScriptの基本的な機能とその使い方を理解することができるでしょう。TypeScriptの静的型付けとオブジェクト指向プログラミングのサポートを活用して、より安全で保守性の高いコードを書くことができます。