特定の型の配列に値を格納したい場合があります。 を使用して any タイプはもちろんこの問題を解決できますが、それは私たちが望まないかもしれない特定のタイプも可能にします。 これはタプルが入ってくるところです。

作成したいとします user の配列 userNameuserId;

let user: any;
let userId = 1;
let userName = "Alf";

let randomBoolean = true;

user = [userId, userName]; // valid
user = [userId, randomBoolean]; // also valid

私たちを設定することによって userany タイプ、私たちはそれに任意のタイプを割り当てることができ、これは私たちの目的を打ち負かします userId これは numberuserName これは string タイプ。 これを解決するには、タプルを使用できます。

let user: [number,string];
let userId = 1;
let userName = "Alf";
let randomBoolean = true;

user = [userId, userName]; // valid
user = [userId, randomBoolean]; // error: Type 'true' is not assignable to type 'string'

タプルを定義するには、目的のタイプを角かっこで囲み、コンマで区切ります。この場合は、 numberstring. ここで、タプルで定義されていない型を渡す場合、次のように言います。 boolean、次のようなエラーメッセージが表示されます。

タイプ「true」はタイプ「string」に割り当てることができません。

これは、タプルを受け入れるように定義したためです。 string 2番目の入力ですが、 boolean.

タプル内の要素へのアクセス

タプル内の要素にアクセスするには、配列の場合と同じようにそのインデックスを使用します。

console.log(user[0])  // 1
console.log(user[1])  // Alf

タプルは、辞書またはキーと値のペアを作成するときに非常に役立ちます。 上記の例を使用すると、後で問題を引き起こすために誤って別のタイプを渡すことなく、ユーザー名とそのIDの配列を取得できます。

let users: [number, string][] = [[1,"Alf"],[2,"Jane"],[3,"Nii"]];

タプルに値を割り当てる場合、最初の2つの値は、タプルで定義されているタイプと正確に一致する必要があります。

たとえば、上記の例では、最初の要素は number そして第二に、 string. 値を交換すると、タプルでタイプが定義されていてもエラーが発生します。

let user: [number,string];
user = ["Alf", 1]; // invalid

上記のコードは無効です。 user 最初の要素が number そして2番目の string、ただしその逆はありません。

タプル変数に追加する後続の値は、特定の順序で事前定義されたタプルタイプのいずれかになります。

user[2] = "John"; // valid
user[3] = 4; // valid
user[4] = true; // invalid. 

上記のコードでは、タプルは numberstring、いずれかの要素を入力できます string また number それらが最初の2つの要素でない限り、順序はありません。 まだ割り当てることはできません boolean タプルがで宣言されていないため、要素の値 boolean タイプ。

それでおしまい。 この投稿がお役に立てば幸いです。 ✨