TypeScriptとは
TypeScriptは,JavaScriptを拡張して開発されたOSSのプログラミング言語で,2014年ごろMicrosoftによって開発された.
TypeScriptで書かれたコードをコンパイルするとJavaScriptのコードに変換される.
TypeScriptの特徴
JavaScriptとの互換性
TypeScriptはJavaScriptを拡張したものなので同じ構文が利用できる.また,TypeScriptで書かれたコードはコンパイルするとJavaScriptのコードに変換されるため,JavaScriptのライブラリなどを利用することができる.
静的な型付け
TypeScriptは変数や関数の型を明示的に指定する.これにより,コンパイラが型エラーをチェックしてくれるため,実行時のエラーを減らすことができる.
JavaScriptの場合(動的型付け)
var x = 1;
x = 'Hello';
変数宣言でxに数字を入れて,その後に文字列を入れてもエラーは起きない.
TypeScriptの場合(静的型付け)
var x: number = 1;
x = 'Hello';
変数宣言でnumber型としてxに数字を入れているため,型の違う文字列を入れるとコンパイルエラーが発生する.
型の種類
number | 数値型 |
---|---|
string | 文字列型 |
boolean | 真偽値型 |
null | null型 |
undefined | undefined型 |
any | すべての型を許容する |
type[] | 配列型,typeには基本データ型が入る(number[],string[]) |
Array | 配列型,typeには基本データ型が入る(Array,Array) |
type文を用いて,型に別名をつけることができる.
型の書き方
変数
var name: string = '太郎';
var age: number = 20;
var other: any = 'その他';
var favorites: Array<string> = ['soccer', 'movie', 'eating'];
変数名の横に:type
で型を指定する.
関数
function example(name: string): void{
}
//アロー関数の場合
const example = (name: string, age: number): number => {
return 0;
}
関数の引数の横に戻り値の型を指定する.戻り値がない場合はvoidを指定する.
オブジェクト
//オブジェクト型の宣言
interface Person{
name: string;
age: number;
isStudent: boolean;
gender?: string;
}
//オブジェクトの作成
const person: Person = {
name: 'Alice',
age: 30,
isStudent: false
//genderがなくてもエラーにならない
};
オブジェクトの型を定義する場合は,interfaceを使用して,プロパティの型や構造をしてする.
プロパティ名に[?]をつけると,オプション化することができ,プロパティが存在しないことを許可する.
タプル
const person: [string, number, boolean] = ['太郎', 20, true];
console.log(person[0]); // => 「太郎」を出力
型エイリアス
type name = string;
const username: name = '太郎'; // これと同じ→ const username: string = '太郎';
typeを利用して既存の型に別名をつけることができる.これにより,複雑な型を簡潔に表現することや再利用性を高めることができる.
ユニオン型
const union: string | number = 10;
union = 'taro'; // エラーは発生しない
union = true; // エラー発生
|
を利用することで,変数などに複数の型を指定できる.指定したものならエラーは発生しない.
インターセクション型
type A = { x: number };
type B = { y: number };
type C = A & B; // C型は { x: number, y: number } という構造を持つ
&を利用して,複数の型を結合して新しい型を作ることができる.
enum型[列挙型]
enum SIZE {
Small, // 0
Medium,// 1
Large // 2
}
const size: SIZE = SIZE.Medium;
console.log(size); // 1
特定の一部連の定数に対して,意味のある名前をつけるための型.これに処理,enumで定義されていない文字列を代入してしまう可能性がなくなる.定義されたものにはインデックスが割り当てられている.
(ちなみにenum型は非推奨らしい.)