number型
数値。整数・少数・浮動小数点などを含む。
例:1, 5.3, -10
string型
全ての文字列。クォーテーション、グレイヴ・アクセントによって括られる。
グレイヴ・アクセントはテンプレートリテラルを用いる場合に使用される。
例:'Hello', "Hello", `Hello`
boolean型
trueかfalseのどちらか。
Object型
JavaScriptの全てのObject。
中身の型の指定が細かくできる。
型推論ができている場合、あえて明示的に書く必要はない。
const person: {
name: string;
age: number;
} = {
name: 'Yuki',
age: 28
};
Object型はネストさせることもできる。
const list: {
kirby: {
ability: string;
}
} = {
kirby: {
ability: 'eat'
}
};
Array型
JavaScriptの全てのArray。
要素の数、各要素の型は柔軟に対応できる。
const hobbies: string[] = ['Sports', 'Reading'];
const numbers: number[] = [5, 10, 2.5];
Tuple型
Array型の一つ。要素の数が固定された配列。
異なる長さの配列が代入されること、指定の順番の要素に異なる型の値が代入されることを防ぐ。
注意として、array.push()
による値の追加など、
メソッドによる要素の追加、削除等はエラーとして検知できない。
const role: [number, string] = [2, 'author'];
role[0] = 'two'; // number型以外を指定できないためエラー。
role[2] = 'library'; // 配列の要素は2つで固定されているためエラー。
role.push('library'); // 要素を追加できてしまう。
Enum型
名前が付いた定数の集まり。列挙型とも言う。
定数の一覧を、カスタム型を利用して定義する。
enum Role {
ADMIN,
READ_ONLY,
AUTHOR
}
const person = {
name: 'Yuki',
age: 29,
role: Role.ADMIN
};
冗長な書き方をすると以下のようになる。これらはEnum型での定義が望ましい。
// それぞれを定数で定義する。
const ADMIN = 0;
const READ_ONLY = 1;
const AUTHOR = 2;
const person = {
name: 'Yuki',
age: 29,
role: ADMIN
};
TypeScriptからコンパイルされたJavaScriptには、以下のように記述される。
let Role;
(function (Role) {
Role[Role["ADMIN"] = 0] = "ADMIN";
Role[Role["READ_ONLY"] = 1] = "READ_ONLY";
Role[Role["AUTHOR"] = 2] = "AUTHOR";
})(Role || (Role = {}));
any型
一番柔軟な型。どんな型の値を入れてもエラーにならない。
エラーの元になるため、基本的には指定することはない。型推論か型指定を行う。
その他
コアな型ではないが、上で紹介したコアな型を用いて定義できる型がいくつか存在する。
Union型
指定した複数の型を受け取ることができる型。
// 変数に複数の型を定義する
let value: string | number;
// 引数としてstring型、もしくはnumber型を受け取ることができるようになる
const combine = (item: string | number) => {
if (typeof item === 'number') {
return item.toString();
} else {
return item;
}
};
combine(1);
combine('Max');
Literal型
呼び出し元で特定の文字列を呼び出して欲しい場合に定義する型。
// 'ADMIN'もしくは'USER'という文字列のみを引数で受け取ってほしい。
// 2つの値以外が入ってくることを想定しない。
const pushResult = (value: 'ADMIN' | 'USER') => {
....;
};
カスタム型/型エイリアス
自分で型を定義できる。関数や変数よりも先に宣言する。
string
のような既にある型の名前は命名に使用できない。
type
を用いる。
type custom = string | number;
// 引数の型定義にcustomを使用する
const combine = (item: custom) => {
....;
};