2016-11-19 21 views
3

このエラーは、typescriptを取得しようとしている間、私を悩ませています。誰もが2つの '配列'の違いは何だと説明できますか?これは配列ではありませんか?そうでなければ、それは何ですか?あなたの第二のタイプはしか単一AppointmentItemDataを含んでいてもよいこと、a tupleありながらタイプ 'Array []'は '[Array]'タイプに割り当てられません

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

答えて

1

あなたの第一のタイプ(AppointmentItemData[])は、AppointmentItemData要素の配列です。 the docsから

タプル型では、固定数の要素の型がわかっているが、同じである必要がない配列を表現できます。たとえば、stringnumberのペアとして値を表現したいことがあります。

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

活字体は、どこに、この変数は唯一、すべてはそれに3要素の配列を持つべきである」ことをエンコードすることができます最初の要素は数値、2番目は文字列、3番目はPromiseで最終的にはLizardのような形に変換されますが、それ以外の場合は[number, string, Promise<Lizard>]を符号化する唯一の方法は{}[]です(つまり、おおよそObject[])。

+1

ありがとうSean! Tupleの使い方の例を教えてもらえますか?タプルは、javascriptオブジェクトと同様の構造を持っていると私には聞こえます。 – duezz

+1

タプルは、異種の値を持つ配列です - あなたはオブジェクトとして(例えば '{0:1,1: 'hi'、2:someSalamander} ')' [1、' hi '、someSalamander]それは*配列です。つまり、 'thingTypedAsTuple instanceof Array === true'です。どのように使用するかについては、名前のついたものとは対照的に、一連のものを持ち歩きたいところです。いくつかの例には、 '[success、error]'、 '[value、validations]'、 '[x、y、z]'などがあります。 –

関連する問題