object / array / tuple
| 対応: | TypeScript 1.0(2014) |
|---|
複数の値をまとめて扱う複合型の基本です。『object』はプロパティを持つ値、配列型は同じ型の並び、タプル型は要素数と各要素の型が固定された配列を表します。
構文
// オブジェクト型: プロパティと型を指定します。
let 変数名: { プロパティ名: 型; プロパティ名: 型 } = { プロパティ名: 値 };
// 配列型: 2通りの書き方があります。
let 変数名: 型[] = [値, 値];
let 変数名: Array<型> = [値, 値];
// タプル型: 要素数と各要素の型を固定します。
let 変数名: [型1, 型2] = [値1, 値2];
型・構文一覧
| 型・構文 | 概要 |
|---|---|
| object | プリミティブ(string, number等)以外のすべての値を表す型です。プロパティの情報を持たないため実用的ではなく、通常はオブジェクトリテラル型を使います。 |
| { key: Type } | プロパティ名と型を指定したオブジェクトリテラル型です。特定の形状を持つオブジェクトを表現します。 |
| 型[] | 指定した型の要素を持つ配列を表します。最もよく使われる配列型の書き方です。 |
| Array<型> | 型[]と同等のジェネリクス形式の配列型です。 |
| [型1, 型2] | タプル型です。要素数と各位置の型が固定されます。 |
| readonly 型[] | 読み取り専用の配列型です。要素の追加・変更・削除ができません。 |
サンプルコード
// オブジェクトリテラル型: プロパティの型を定義します。
let user: { name: string; age: number; isAdmin: boolean } = {
name: "member_1",
age: 23,
isAdmin: false,
};
console.log(user.name); // 『member_1』と出力されます。
// user.email = "test@wp-p.info"; // エラー: emailプロパティは定義されていません。
// 配列型: 同じ型の要素を並べます。
let scores: number[] = [85, 92, 78, 90];
scores.push(88); // 正常に動作します。
// scores.push("優"); // エラー: stringはnumber[]に追加できません。
console.log(scores.length); // 5と出力されます。
// Array<T>形式: 型[]と同じ意味です。
let names: Array<string> = ["member_1", "member_2", "member_3"];
console.log(names[0]); // 『member_1』と出力されます。
// タプル型: 要素の順番と型が固定されます。
let point: [number, number] = [10, 20]; // x座標とy座標を表します。
console.log(point[0]); // 10と出力されます。
// 異なる型を組み合わせたタプルも作れます。
let entry: [string, number] = ["member_1", 23];
let [entryName, entryAge] = entry; // 分割代入も使えます。
console.log(`${entryName}: ${entryAge}歳`); // 『member_1: 23歳』と出力されます。
// readonly配列: 変更を禁止します。
const readonlyScores: readonly number[] = [100, 95, 88];
// readonlyScores.push(70); // エラー: readonlyのため変更できません。
console.log(readonlyScores[0]); // 100と出力されます。
実行すると次のように出力されます。
npx ts-node ts_object_array_tuple.ts member_1 5 member_1 10 member_1: 23歳 100
概要
TypeScriptのオブジェクト型は、プロパティの名前と型を明示することで、不正なプロパティへのアクセスや型の不一致をコンパイル時に検出できます。実際の開発では、オブジェクト型の定義にはinterfaceやtypeを使って名前を付けることが多いです。
配列型の『型[]』と『Array<型>』は完全に同等です。一般的には『型[]』の方がシンプルで読みやすいため、こちらが多く使われます。
タプル型は、異なる型の要素を固定順序で保持したいときに便利です。関数から複数の値を返す際(例: `[value, error]` のような形式)によく使われます。ただし、要素数が多い場合は可読性が下がるため、オブジェクト型の利用を検討してください。
記事の間違いや著作権の侵害等ございましたらお手数ですがこちらまでご連絡頂ければ幸いです。