関数の型
関数の引数や戻り値に型をつける方法を学ぼう
に型をつける意味
前のセクションでは変数に型をつけました。
でも同じように、引数(受け取るデータ)と戻り値(返すデータ)に型を指定できます。
function add(a: number, b: number): number {
return a + b;
}a: numberb: number→ 引数の型: number(閉じ括弧の後ろ)→ 戻り値の型
これにより、間違った使い方をした時点でエラーが出ます。
add(10, "20"); // エラー: 'string' 型を 'number' 型に割り当てられません
add(10); // エラー: 2個の引数が必要ですが、1個しかありません引数の型
基本
引数名の後ろに : 型 を書きます。
function greet(name: string): void {
console.log(`こんにちは、${name}さん`);
}
greet("田中"); // OK
greet(123); // エラー省略可能な引数(オプショナル引数)
引数名の後ろに ? をつけると、その引数は省略可能になります。
function greet(name: string, title?: string): void {
if (title) {
console.log(`こんにちは、${title}の${name}さん`);
} else {
console.log(`こんにちは、${name}さん`);
}
}
greet("田中"); // OK: "こんにちは、田中さん"
greet("田中", "部長"); // OK: "こんにちは、部長の田中さん"省略された場合、その引数の値は undefined になります。
省略可能な引数は、慣例的に必須の引数より後に書く
// OK
function example(required: string, optional?: number): void { ... }省略可能な引数を先に書くと、呼び出し時に省略できなくなるため意味がありません。
慣例として、省略可能な引数は引数リストの最後に置きます。
デフォルト引数
引数にデフォルト値を設定することもできます。
省略された場合にデフォルト値が使われます。
function greet(name: string, greeting: string = "こんにちは"): void {
console.log(`${greeting}、${name}さん`);
}
greet("田中"); // "こんにちは、田中さん"
greet("田中", "おはよう"); // "おはよう、田中さん"戻り値の型
基本
の引数リストの後ろに : 型 を書きます。
function multiply(a: number, b: number): number {
return a * b;
}
const result: number = multiply(3, 5); // 15── 何も返さない
戻り値がないには void を使います。
function logMessage(message: string): void {
console.log(message);
// return 文がない = 何も返さない
}void は「このは値を返しません」という宣言です。
console.log のような、処理だけして何も返さないで使います。
JavaScript のにも同じように型をつけられます。
// 通常の関数
function add(a: number, b: number): number {
return a + b;
}
// アロー関数
const add = (a: number, b: number): number => {
return a + b;
};
// アロー関数(省略記法:1行で return できる場合)
const add = (a: number, b: number): number => a + b;どの書き方でも型の指定方法は同じです。
の型定義
そのものの型を定義することもできます。
同じ形のが複数ある場合に、型を揃えるのに便利です。
// 「数値を2つ受け取って数値を返す関数」の型を定義
type CalcFunction = (x: number, y: number) => number;
// 同じ型の関数を複数作る
const add: CalcFunction = (x, y) => x + y;
const multiply: CalcFunction = (x, y) => x * y;
// どちらも同じ形なので、同じように呼び出せる
add(10, 5); // 15
multiply(10, 5); // 50型を定義しておくと、形が合わないを作ろうとした場合にエラーになります。
// エラー: 文字列を返す関数は CalcFunction に合わない
const concat: CalcFunction = (x, y) => `${x} + ${y}`;type については次のセクションで詳しく説明します。
ここでは「にも型をつけられる」ということだけ覚えておいてください。
セクションまとめ
- ✓の引数と戻り値に型を指定できる
- ✓引数名の後ろに ? をつけると省略可能になる
- ✓何も返さないの戻り値は
- ✓にも同じように型をつけられる