Typescript-functions
TypeScript-関数
関数は、読み取り可能、保守可能、および再利用可能なコードの構成要素です。 関数は、特定のタスクを実行するための一連のステートメントです。 関数は、プログラムをコードの論理ブロックに編成します。 定義すると、コードにアクセスするために関数を呼び出すことができます。 これにより、コードが再利用可能になります。 さらに、関数を使用すると、プログラムのコードの読み取りと保守が簡単になります。
関数宣言は、関数の名前、戻り値の型、およびパラメーターについてコンパイラーに通知します。 関数定義は、関数の実際の本体を提供します。
Sr.No | Funtions & Description |
---|---|
1. |
関数定義は、特定のタスクの実行内容と方法を指定します。 |
2. |
関数を実行するには、関数を呼び出す必要があります。 |
3. |
関数は、制御とともに値を呼び出し元に戻すこともできます。 |
4. |
パラメータは、値を関数に渡すメカニズムです。 |
オプションのパラメータ
オプションのパラメーターは、関数の実行のために引数を強制的に渡す必要がない場合に使用できます。 パラメータには、名前に疑問符を追加することにより、オプションとしてマークできます。 オプションのパラメーターは、関数の最後の引数として設定する必要があります。 オプションのパラメータを持つ関数を宣言するための構文は以下のとおりです-
例:オプションのパラメーター
- 上記の例では、パラメーター化された関数を宣言しています。 ここで、3番目のパラメーター、つまりmail_idはオプションのパラメーターです。
- 関数呼び出し中にオプションのパラメーターに値が渡されない場合、パラメーターの値は未定義に設定されます。
- この関数は、引数に値が渡された場合にのみmail_idの値を出力します。
コンパイル時に、次のJavaScriptコードが生成されます-
上記のコードは、次の出力を生成します-
レストパラメーター
レストパラメータは、Javaの変数引数に似ています。 残りのパラメーターは、関数に渡すことができる値の数を制限しません。 ただし、渡される値はすべて同じタイプでなければなりません。 つまり、残りのパラメーターは、同じ型の複数の引数のプレースホルダーとして機能します。
残りのパラメーターを宣言するには、パラメーター名の前に3つのピリオドを付けます。 残りのパラメータは、restパラメータの前に来る必要があります。
例:レストパラメーター
- 関数addNumbers()宣言は、残りのパラメーター_nums_を受け入れます。 残りのパラメーターのデータ型は配列に設定する必要があります。 さらに、関数は最大で1つの残りのパラメーターを持つことができます。
- 関数は、それぞれ3つの値と6つの値を渡すことにより、2回呼び出されます。
- forループは引数リストを反復処理し、関数に渡されてそれらの合計を計算します。
コンパイル時に、次のJavaScriptコードが生成されます-
上記のコードの出力は次のとおりです-
デフォルトパラメータ
関数パラメーターには、デフォルトで値を割り当てることもできます。 ただし、このようなパラメーターは明示的に値を渡すこともできます。
構文
注-パラメータをオプションとデフォルトで同時に宣言することはできません。
例:デフォルトのパラメーター
コンパイル時に、次のJavaScriptコードが生成されます-
その出力は次のとおりです-
- この例では、_calculate_discount_という関数を宣言しています。 この関数には、価格とレートの2つのパラメーターがあります。
- パラメーター_rate_の値は、デフォルトで_0.50_に設定されています。
- プログラムは関数を呼び出し、パラメーターpriceの値のみを渡します。 ここで、rate_の値は_0.50(デフォルト)です
- 同じ関数が呼び出されますが、2つの引数があります。 _rate_のデフォルト値は上書きされ、明示的に渡された値に設定されます。
無名関数
識別子(関数名)にバインドされていない関数は、*匿名関数*と呼ばれます。 これらの関数は、実行時に動的に宣言されます。 無名関数は、標準関数と同様に、入力を受け入れて出力を返すことができます。 通常、匿名関数は最初の作成後はアクセスできません。
変数には匿名関数を割り当てることができます。 このような式は関数式と呼ばれます。
構文
例─単純な匿名関数
コンパイル時に、JavaScriptで同じコードが生成されます。
それは次の出力を生成します-
例─パラメーター付きの無名関数
無名関数は、渡された値の積を返します。
コンパイル時に、次のJavaScriptコードが生成されます-
上記のコードの出力は次のとおりです-
関数式と関数宣言─それらは同義語ですか?
関数式と関数宣言は同義ではありません。 関数式とは異なり、関数宣言は関数名によってバインドされます。
2つの基本的な違いは、関数宣言が実行前に解析されることです。 一方、関数式は、実行中にスクリプトエンジンが検出した場合にのみ解析されます。
JavaScriptパーサーは、メインコードフローで関数を検出すると、関数宣言を想定します。 関数がステートメントの一部として来るとき、それは関数式です。
関数コンストラクター
TypeScriptは、Function()と呼ばれる組み込みJavaScriptコンストラクターを使用した関数の定義もサポートしています。
構文
例
新しいFunction()はコンストラクターの呼び出しであり、コンストラクターは関数参照を作成して返します。
コンパイル時に、JavaScriptで同じコードが生成されます。
上記のサンプルコードの出力は次のとおりです-
再帰およびTypeScript関数
再帰は、結果に到達するまで関数呼び出しを繰り返し実行することにより、操作を反復する手法です。 再帰は、ループ内から異なるパラメーターを使用して同じ関数を繰り返し呼び出す必要がある場合に最適です。
例–再帰
コンパイル時に、JavaScriptで同じコードが生成されます。
ここにその出力があります-
例:匿名の再帰関数
コンパイル時に、JavaScriptで同じコードが生成されます。
その出力は次のとおりです-
ラムダ関数
Lambdaは、プログラミングにおける匿名関数を指します。 Lambda関数は、匿名関数を表す簡潔なメカニズムです。 これらの関数は、*矢印関数*とも呼ばれます。
ラムダ関数-解剖学
ラムダ関数には3つの部分があります-
- パラメータ-関数はオプションでパラメータを持つことができます
- 太い矢印表記/ラムダ表記(⇒)-行き先演算子としても呼び出されます
- ステートメント-関数の命令セットを表します
ヒント-慣例により、コンパクトで正確な関数宣言のために、1文字のパラメーターの使用が推奨されます。
ラムダ式
これは、1行のコードを指す匿名関数式です。 その構文は次のとおりです-
例:ラムダ式
プログラムはラムダ式関数を宣言します。 関数は、10と渡された引数の合計を返します。
コンパイル時に、次のJavaScriptコードが生成されます。
ここに上記のコードの出力があります-
ラムダ声明
Lambdaステートメントは、コードブロックを指す匿名関数宣言です。 この構文は、関数の本体が複数行にわたる場合に使用されます。 その構文は次のとおりです-
例:Lambdaステートメント
関数の参照が返され、変数 foo に保存されます。
コンパイル時に、次のJavaScriptコードが生成されます-
上記のプログラムの出力は次のとおりです-
構文のバリエーション
パラメータタイプ推論
パラメーターのデータ型を指定することは必須ではありません。 このような場合、パラメーターのデータ型はanyです。 私たちは次のコードスニペットを見てみましょう-
コンパイル時に、次のJavaScriptコードが生成されます-
その出力は次のとおりです-
単一パラメーターのオプションの括弧
コンパイル時に、次のJavaScriptコードが生成されます-
その出力は次のとおりです-
単一ステートメントのオプションの中括弧、パラメーターなしの空の括弧
次の例は、これら2つの構文のバリエーションを示しています。
コンパイル時に、次のJavaScriptコードが生成されます-
その出力は次のとおりです-
関数のオーバーロード
関数には、提供される入力に基づいて異なる動作をする機能があります。 言い換えれば、プログラムは、実装が異なる同じ名前の複数のメソッドを持つことができます。 このメカニズムは、関数のオーバーロードと呼ばれます。 TypeScriptは、関数のオーバーロードをサポートしています。
TypeScriptの関数をオーバーロードするには、以下の手順に従う必要があります-
- ステップ1 *-同じ名前で異なる関数シグネチャを持つ複数の関数を宣言します。 関数のシグネチャには次のものが含まれます。
- パラメータのデータ型
- パラメーターの数
- パラメータのシーケンス
注-関数のシグネチャには、関数の戻り値の型は含まれません。
ステップ2 *-宣言の後に関数定義を続ける必要があります。 パラメータタイプは、オーバーロード中にパラメータタイプが異なる場合は、 *any に設定する必要があります。 さらに、上記で説明した case b の場合、関数定義中に1つ以上のパラメーターをオプションとしてマークすることを検討できます。
- ステップ3 *-最後に、関数を呼び出して機能させる必要があります。
例
私たちは今、次のサンプルコードを見てみましょう-
- 最初の2行は、関数のオーバーロード宣言を示しています。 関数には2つのオーバーロードがあります-
- 単一の文字列パラメーターを受け入れる関数。
- 型番号と文字列の2つの値をそれぞれ受け入れる関数。
- 3行目は関数を定義しています。 パラメーターのデータ型は any に設定されます。 さらに、ここでは2番目のパラメーターはオプションです。
- オーバーロードされた関数は、最後の2つのステートメントによって呼び出されます。
コンパイル時に、次のJavaScriptコードが生成されます-
上記のコードは、次の出力を生成します-