0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【超基礎】TypeScript、タプルについて

Posted at

前提

この記事は、初学者の私が、サバイバルTypeScriptで学んだこと+調べたことをまとめたものになります。

従って、経験則に基づいた発言ではないため、一部慣習とは違っていたり、認知にずれがあったりする可能性がありますので、ぜひコメントで指摘していただけると幸いです。

環境

記事内のコードは以下の環境で動作確認済みです。

  • Node.js: v22.10.0
  • TypeScript: Version 5.6.3

タプルとは?

  • 異なる型の値を要素として持つことができる配列
  • 型の種類、型の順番、要素の数が固定される
  • インデックスや分割代入による値へのアクセスが可能
  • Promise.all()との併用により並列処理を実装できる

pythonにおけるタプルは、値を変更できない配列(リスト) を指すが、

TypeScriptにおけるタプルは、値の変更はできる

配列との違い

配列 タプル
複数の型の格納 非推奨
ユニオン型を使えば出来ないことはない
OK
長さの変更 OK (.push()メソッドによる追加)  NG
変数の順序 特に指定はなし(ユースケースによる) 宣言時の型の順番に従う
Arrayによる宣言 可能 不可

タプルと型

  • タプル宣言時に[type,type...]の形式で型注釈を行う
  • 同様の形式で型エイリアスの宣言も可能
  • 型の順番は固定される

実装例

タプル
//宣言
const human:[string,number] = [ "taro", 20 ];

//インデックスによるアクセス
console.log(human[0]); //=>taro
console.log(human[1]); //=>20

//分割代入
//型注釈が無くてもエラーは出ない
const [name,age]:[string,number] = human;
console.log(name); //=>taro
console.log(age); //=>20

//値の追加(NG)
human.push(5) //=> Error
タプルを使った並列処理
//サバイバルtypescriptからの引用
//https://typescriptbook.jp/reference/values-types-variables/tuple

//タプルとPromise.allによる並列処理
//stringとnumberが格納されたタプルを取得できる
//完了までの所要時間は5秒
const tuple: [string, number] = await Promise.all([
  takes3Seconds(), //処理に 3 秒かかり、string を返す関数
  takes5Seconds(), //処理に 5 秒かかり、number を返す関数
]);

まとめ

以上になります。

慣例から外れた部分があれば指摘していただけると幸いです!!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?