2016-11-19 96 views
3

當我試圖抓住打字稿時,這個錯誤會讓我煩惱。任何人都可以解釋兩個'數組'之間的區別是什麼?這是不是一個數組?如果不是,那麼它是什麼?類型'Array []'不能分配給類型'[Array]'

[ts] Type 'AppointmentItemData[]' is not assignable to type '[AppointmentItemData]'. 
     Property '0' is missing in type 'AppointmentItemData[]'. 

回答

1

你的第1類型(AppointmentItemData[])是AppointmentItemData元件的陣列,而第二個類型是a tuple,可能永遠只包含一個單AppointmentItemData。引用自the docs

元組類型允許您表示已知固定數量元素的類型但不必相同的數組。例如,你可能想表示一個值作爲一對string的和number

// Declare a tuple type 
let x: [string, number]; 
// Initialize it 
x = ["hello", 10]; // OK 
// Initialize it incorrectly 
x = [10, "hello"]; // Error 

打字稿允許你編碼「該變量應該僅每有一個3元素數組中它,在那裏第一個元素是一個數字,第二個元素是一個字符串,第三個元素是一個Promise,最終將解析成類似於Lizard的東西「,而如果它不是編碼[number, string, Promise<Lizard>]的唯一方法是{}[](也就是說,大致上,一個Object[])。

+1

謝謝肖恩!你能以Tuple的用法爲例來幫助我嗎?這聽起來那個元組有一個javascript對象的相似結構。 – duezz

+1

元組是具有異質值的數組 - 你可以**作爲一個對象(例如'{0:1,1:'hi',2:someSalamander})查看'[1,'hi',someSalamander]但它*是一個數組。也就是'thingTypedAsTuple instanceof Array === true'。至於你如何使用它 - 在任何你想要攜帶一系列事物的地方,而不是一組指定事物。一些例子包括'[success,error]','[value,validations]'和'[x,y,z]'。 –

相關問題