TypeScript | 基礎文法:配列・タプル – string[] と Array<string>

TypeScript
スポンサーリンク

string[] と Array<string> は「意味は同じ」

最初に結論から言うと、string[]Array<string>意味はまったく同じです。
どちらも「string 型の要素だけを持つ配列」という型を表しています。

let names1: string[] = ["Taro", "Hanako"];
let names2: Array<string> = ["Taro", "Hanako"];
TypeScript

この2つは、型としては完全に等価です。
じゃあ、なぜ2種類の書き方があるのか——ここを整理していきます。


string[] 記法の特徴(シンプルで読みやすい)

一番よく使われる、素直な書き方

string[] は、「string の配列」という意味をそのまま書いた形です。

let messages: string[] = ["hello", "bye"];
let scores: number[] = [80, 90, 100];
let flags: boolean[] = [true, false, true];
TypeScript

左から右に読んでいくと、
「string があって、その後ろに [] が付いている → string の配列だな」
と直感的に理解しやすいのが強みです。

実務でも、単純な配列型はほとんどこの書き方で書かれます。
User[], Post[], number[] のように、「T[]」の形がデフォルトだと思っていてOKです。

ネストした配列でも使える

多次元配列も、[] を重ねるだけで表現できます。

let matrix: number[][] = [
  [1, 2],
  [3, 4]
];
TypeScript

「number の配列の配列」という意味で、これもかなり読みやすいです。


Array<string> 記法の特徴(ジェネリクスっぽい書き方)

ジェネリック型としての書き方

Array<string> は、「Array という型に string を渡している」という形になっています。

let messages: Array<string> = ["hello", "bye"];
let scores: Array<number> = [80, 90, 100];
TypeScript

これは、Array<T> という「ジェネリック型」に対して、T = stringT = number を指定しているイメージです。

TypeScriptでは、Promise<string>, Map<string, number> のように、
型名<型引数> という形のジェネリック型がたくさん出てきます。
その流れで、「Array もジェネリック型として書けるよ」というのが Array<string> 記法です。

ネストしたときの見え方

多次元配列も、もちろん書けます。

let matrix: Array<Array<number>> = [
  [1, 2],
  [3, 4]
];
TypeScript

ただ、number[][] と比べると少しカッコが多くて読みにくく感じる人もいます。
ここは完全に好みですが、配列が深くなるほど T[] 記法の方がスッキリ見えることが多いです。


どっちを使うべきか(実務での感覚)

基本は string[] を使う

まず、配列型を普通に書くときは、string[] の方を使うのが一般的です。

理由はシンプルで、

短くて読みやすい
JavaScriptの感覚からの延長で理解しやすい
多次元配列も T[][] のように直感的に書ける

からです。

let tags: string[] = ["ts", "js"];
let users: User[] = [{ id: 1 }, { id: 2 }];
TypeScript

このあたりは、チームのコーディング規約でも「配列は T[] 記法で統一」と決められていることが多いです。

Array<T> を選ぶことがある場面

一方で、Array<T> をあえて使う場面もあります。

たとえば、ジェネリック型の中で「配列の型を型引数として受け取りたい」ときなどです。

type Wrapper<T> = {
  items: Array<T>;
};
TypeScript

ここで items: T[] と書いても意味は同じですが、
「ジェネリック型の中で、さらにジェネリックな Array を使っている」という構造が、
Array<T> の方が視覚的に分かりやすいと感じる人もいます。

ただ、これはかなり好みの領域なので、
「まずは T[] を使う。必要になったら Array<T> も読めるようにしておく」
くらいのスタンスで十分です。


初心者がまず押さえておくべきポイント

「意味は同じ。読み書きしやすい方を選べばいい」

一番大事なのは、
string[]Array<string>型としては完全に同じだということです。

なので、

他人のコードを読むときに Array<string> が出てきても、「あ、string[] と同じだな」と分かる
自分で書くときは、まずは string[] を使っておけば困らない

この2つができればOKです。

配列型を書くときに意識したいこと

配列型を書くときに、本当に意識すべきなのは「どっちの記法か」ではなく、

この配列には何の型の要素が入るのか
その要素の型をちゃんと絞れているか(any[] になっていないか)

という部分です。

string[] でも Array<string> でも、
「この配列は string だけを入れる場所だ」と型で宣言できていることが大事。

そこさえブレていなければ、記法の違いはただの“表現の揺れ”に過ぎません。
まずは string[] を自分の手に馴染ませて、Array<string> は「読めればいいや」くらいで構えておくと、肩の力を抜いて進められます。

タイトルとURLをコピーしました