🛡

[TypeScript] 関数の引数を必須ではなくオプションにする

2024/09/22に公開

はじめに

今回は下記書籍でTypeScriptについて学習しました。
下記内容まで解説します。

  • parameter について

結論

前提

オプションパラメーターは、常に暗黙で「undefined」になる可能性がある

const announceSong = (song: string, singer?: string) => {
  console.log(`Song: ${song}`);

  if (singer) {
    console.log(`Singer: ${singer}`);
  }
};

やり方

1. オプションパラメーターに文字列の引数を渡す

指定した文字列に文字列を引数として渡したので、問題がない

announceSong('Have fun !', 'ayaka');
"Song: Have fun !"
"Singer: ayaka"

2. オプションパラメーターに undefined の引数を渡す

singer は「undefined」が追加された合併型になるので、Error にならない

announceSong('Have fun !', undefined);
"Song: Have fun !"

3. オプションパラメーターは、必ず最後であること

オプションパラメーターを先頭に持ってくると、下記のような Error が発生する

const announceSong = (song?: string, singer: string) => {
  console.log(`Song: ${song}`);

  if (singer) {
    console.log(`Singer: ${singer}`);
  }
};
A required parameter cannot follow an optional parameter.
GitHubで編集を提案

Discussion