【JS】【TS】Rest引数 (可変長引数)

■ はじめに

TypeScript と JavaScript の可変長引数 について扱う
Rest引数(Rest Parameters; 可変長引数)っていうらしい。

目次

【1】TypeScript の場合
【2】JavaScript の場合

【1】TypeScript の場合

1)構文

// 変数名の前に「...」を付与
function 関数名(...引数の変数名: 引数の型): 戻り値の型 {
  // 処理
}

2)サンプル

public deploy(...params: string[]) {
  params.forEach(param => {
    console.log(`test - ${param}`)
  })
}

deploy("xxx", "yyy")

【2】JavaScript の場合

* arguments で行う

https://takamints.hatenablog.jp/entry/varg-on-es6-modern-javascript

補足:argumentsについて

* arguments は、配列ではなく、オブジェクト
* Java/C#などの可変長引数とは異なり、
 arguments には、すべての引数の値が含まれている。
   (以下のサンプルで「if (index == 0) { continue; }」しているのは、
 第一引数"sample1"まで含まれてしまっている)

1)サンプル

<!DOCTYPE html>
<html>
<head>
<meta charset='UTF-8'>
<script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
</head>
<body>
<form>
<div id="sample1">Result</div>
<input id="fire" type="button" value="click me!">
</form>
<script type="text/javascript">
$("#fire").click(function(event){
  sampleFunction("sample1", 1, 2, 3, 4, 5);
  
});

function sampleFunction(id) {
  var result = "";

  for (var index in arguments) {
    if (index == 0) {
      continue;
    }
    result += arguments[index] + " ";
  }
  document.getElementById(id).innerHTML = result;
}
</script>
</body>
</html>

出力結果

1 2 3 4 5 

関連記事

TypeScript ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2020/12/21/180904
TypeScript ~ 基本編 ~
https://dk521123.hatenablog.com/entry/2021/02/15/000000