2016-09-21 150 views
10

請考慮以下Typescript示例。第一行導致錯誤'type undefined []不能分配給類型[string]'。最後兩行做編譯。字符串[]和[字符串]之間的區別

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

如何解釋TypeScript中的類型定義[string]

回答

12

第一個(givesAnError)和最後一個(isAlsoOKare tuples,第二個(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 

但是:

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 

理解JavaScript輸出將始終使用數組很重要,因爲在js中沒有元組。
但編譯時間是有用的。

相關問題