2016-09-21 8 views
10

以下のTypescriptの例を考えてみましょう。最初の行は、 'type undefined []は[string]型に代入不可能です。'というエラーが発生します。最後の2行はコンパイルされます。文字列[]と[文字列]の相違点

let givesAnError: [string] = []; 
let isOK: string[] = []; 
let isAlsoOK: [string] = ["foo"]; 

タイプ定義[string]をTypescriptでどう解釈する必要がありますか?

答えて

12

第1番目(givesAnError)と最後(isAlsoOKare tuplesと第2番目(isOK)は配列です。あなたの要素の配列すべてと

同じ種類のものである:

let a: string[]; 
let b: boolean[]; 
let c: any[]; 

しかし、タプルでは、​​異なる種類(固定長)を持つことができます

let a: [string, boolean, number]; 
let b: [any, any, string]; 

ので:

a = ["str1", true, 4]; // fine 
b = [true, 3, "str"]; // fine 

but:

a = [4, true, 3]; // not fine as the first element is not a string 
b = [true, 3]; // not fine because b has only two elements instead of 3 

jsにタプルのようなものがないので、javascriptの出力では常に配列が使用されることを理解することが重要です。
コンパイル時には便利です。

関連する問題