メインコンテンツにスキップ
モジュール 3 · レッスン 1 / 2コース内の 5/14~12 min
モジュールのレッスン (1/2)

型付き関数

関数は、JavaScript アプリケーションの基本的な構成要素です。 TypeScript では、入力引数と戻り値の両方に正確に注釈を付けることができるため、インターフェイスと関数呼び出しが非常に安全で自己文書化されます。


オプションのパラメータとデフォルトのパラメータ

JavaScript では、すべてのパラメーターはオプションであり、省略された場合はデフォルトで undefined になります。 TypeScript では、デフォルトで、宣言されたすべてのパラメーターが必須です。

ただし、疑問符 (?) を使用してオプションのパラメーターを定義したり、関数シグネチャで直接デフォルト値を指定したりできます。

1. オプションのパラメータ

オプションのパラメーターはすべての必須パラメーターの 後 に配置する必要があります。

TS
function greetUser(name: string, title?: string): string {
  if (title) {
    return `Good morning ${title} ${name}`;
  }
  return `Hello ${name}`;
}

2. デフォルトパラメータ

デフォルト値を持つパラメータに値が指定されていない場合、TypeScript はその型を推測し、指定されたデフォルトを割り当てます。

TS
function greetUserWithDefault(name: string, prefix: string = 'Hello'): string {
  return `${prefix} ${name}`;
}

残りのパラメータ (...args)

可変数の引数を受け入れたい場合は、rest 演算子を使用できます。 TypeScript では、これらのパラメーターは配列として入力する必要があります。

TS
function sumAll(message: string, ...numbers: number[]): string {
  const total = numbers.reduce((sum, n) => sum + n, 0);
  return `${message} ${total}`;
}

関数の種類 (コールシグネチャ)

関数の型を個別に定義し、それを変数宣言またはコールバック引数で再利用できます。

TS
// Define function type using type alias
type MathOperation = (a: number, b: number) => number;

const add: MathOperation = (x, y) => x + y;
const multiply: MathOperation = (x, y) => x * y;

このアプローチは、関数を引数として他の関数 (コールバック) に渡す場合に不可欠です。


自分で試してみてください

演習 1: オプションのパラメータ

運動#ts.m3.l1.e1
試行回数: 0読み込み中…

firstName パラメータ (文字列) とオプションの lastName パラメータ (文字列) を受け入れる formatName という名前の関数を作成します。 lastName が指定されている場合は、「firstName lastName」を返します。それ以外の場合は、「firstName」のみを返します。

エディターを読み込み中…
ヒントを表示

オプションのパラメータは、必須パラメータの後に lastName?: string を使用して宣言されることに注意してください。

3 回の試行後に解決策が利用可能になります

演習 2: デフォルトのパラメータ

運動#ts.m3.l1.e2
試行回数: 0読み込み中…

基数 (数値) と指数 (デフォルト値 2 の数値) を受け入れる power という名前の関数を作成します。この関数は、基数を指数化した値を計算して返す必要があります (Math.pow を使用)。

エディターを読み込み中…
ヒントを表示

関数シグネチャ内で基数: 数値と指数: 数値 = 2 を使用します。

3 回の試行後に解決策が利用可能になります

演習 3: 関数のシグネチャ

運動#ts.m3.l1.e3
試行回数: 0読み込み中…

2 つの数値パラメータを受け取り、数値を返す関数を記述する BinaryOp という名前の型エイリアスを定義します。次に、加算を実装する BinaryOp 型の sum という名前の定数を宣言します。

エディターを読み込み中…
ヒントを表示

関数タイプの構文は、(a: 数値、b: 数値) => 数値です。

3 回の試行後に解決策が利用可能になります

演習 4: コールバック関数

運動#ts.m3.l1.e4
試行回数: 0読み込み中…

item (文字列の配列) とコールバック (単一の文字列を受け入れ、何も返さない関数、つまり void) という 2 つのパラメーターを受け入れる processItems という名前の関数を作成します。関数は、項目内の各要素に対して for...of ループを実行し、それをコールバックに渡す必要があります。

エディターを読み込み中…
ヒントを表示

シグネチャを processItems(items: string[], callback: (item: string) => void): void として宣言し、ループを使用してコールバックを呼び出します。

3 回の試行後に解決策が利用可能になります