TypeScriptです。any[]とArray<T>の違いを教えてください-調べても記号が多いためみつかりませんでした。。
大きく2つの違いがあります。
## 1. について
例えば以下のコードはコンパイルエラーになります。
```var a : any[]; //okvar b : Array<T>; //Tという型がないのでerror!```
`Array<T>` という表記は定義時の時のものなので、実際に変数の型として使う事はできません。`var b : Array<number>;` のように具体的な型を`T`の箇所に記述して使う必要があります。
## 2. について
```var a : any[];a[0] = 1; //oka[1] = "str"; //oka[2] = {hoge:"fuga"}; //ok
var b : Array<number>;b[0] = 1; //okb[1] = "str"; //error!b[2] = {hoge:"fuga"}; //error!```
TypeScriptのany型は何でも入れられるので、any型の配列(`any[]`)の各要素はどんな型でも入れられます。一方ジェネリック型のArray(`Array<T>`)の場合、要素はTの箇所で指定した型のみに制限されます。
上記の例ではnumber型を指定しているのでbの各要素はnumberでなければコンパイルエラーになります。
## 補足
`any[]` は `Array<any>` と同じ意味です。
`Array<T>`のような表記は「ジェネリック型」、こういう事が出来る言語の機能は「ジェネリクス」で調べると見つかります。
みんなの回答 1 件
大きく2つの違いがあります。
## 1. について
例えば以下のコードはコンパイルエラーになります。
```
var a : any[]; //ok
var b : Array<T>; //Tという型がないのでerror!
```
`Array<T>` という表記は定義時の時のものなので、実際に変数の型として使う事はできません。`var b : Array<number>;` のように具体的な型を`T`の箇所に記述して使う必要があります。
## 2. について
```
var a : any[];
a[0] = 1; //ok
a[1] = "str"; //ok
a[2] = {hoge:"fuga"}; //ok
var b : Array<number>;
b[0] = 1; //ok
b[1] = "str"; //error!
b[2] = {hoge:"fuga"}; //error!
```
TypeScriptのany型は何でも入れられるので、any型の配列(`any[]`)の各要素はどんな型でも入れられます。一方ジェネリック型のArray(`Array<T>`)の場合、要素はTの箇所で指定した型のみに制限されます。
上記の例ではnumber型を指定しているのでbの各要素はnumberでなければコンパイルエラーになります。
## 補足
`any[]` は `Array<any>` と同じ意味です。
`Array<T>`のような表記は「ジェネリック型」、こういう事が出来る言語の機能は「ジェネリクス」で調べると見つかります。
Playground - Welcome to TypeScript
http://bit.ly/1Mmwc70関連するトピックス