演習 - パラメーターを使用する
この演習では、必須、省略可能、および既定のパラメーターを持つ関数を作成します。
必須のパラメーター
プレイグラウンドを開き、既存のコードがあれば削除します。
次のアロー関数を入力します。この関数は、3 つの必須パラメーターを受け取ります。
let addThreeNumbers = (x: number, y: number, z: number): number => x + y + z;
「
addThreeNumbers(10, 20)
」と入力して、関数を呼び出してみます。 TypeScript ではエラー "引数を 3 つ想定していますが、2 つ与えられました。'z' の引数が与えられていません。 実行後、この関数からはNaN
が返されます。3 つ目の引数がundefined
として渡され、計算を無効にしたためです" が表示されます。「
addThreeNumbers(10, 20, 30, 40)
」と入力するとどうなるでしょう。 TypeScript ではエラー "引数を 3 つ想定していますが、4 つ与えられました。 実行時、4 つ目の引数が破棄され、この関数からは60
が返されます" が表示されます。
省略可能なパラメーター
この関数で、
y
パラメーターを省略可能にしてみます。 処理内容let addThreeNumbers = (x: number, y?: number, z: number): number => x + y + z;
省略可能パラメーターの位置に問題があるため、TypeScript でエラーが発生します。 パラメーター リストで、省略可能パラメーターはすべての必須パラメーターの後に指定されている必要があります。
y
パラメーターの代わりに、z
パラメーターを省略可能にしてみてください。 また、この関数で正しい値が返されるようにするには、z
がundefined
として渡される可能性に対処するように更新する必要もあります。 これで、addThreeNumbers(10, 20)
やaddThreeNumbers(10, 20, 30)
を使用して関数を呼び出すことができるようになります。let addThreeNumbers = (x: number, y: number, z?: number): number => { if((z === undefined)) { return x + y; } else { return x + y + z; } };
既定のパラメーター
次のアロー関数を入力します。この関数は、3 つの必須パラメーターを受け取ります。
let subtractThreeNumbers = (x: number, y: number, z: number): number => x - y - z;
z: number
をz = 100
に置き換えて、z
パラメーターに既定値100
を割り当て ます。let subtractThreeNumbers = (x: number, y: number, z = 100): number => x - y - z;
2 つおよび 3 つの引数を使用して関数を呼び出し、結果をテストしてみてください。
subtractThreeNumbers(10, 20); // returns -110 because 'z' has been assigned the value 100 subtractThreeNumbers(10, 20, 15); // returns -25