TypeScript(JavaScript)では、関数を定義して、その関数の返り値を変数に代入できる。
基本の関数定義と返り値
function greet(name: string): string {
return `Hello, ${name}!`;
}
const message = greet("Alice");
console.log(message); // → "Hello, Alice!"function greet(name: string): string {}
→nameを引数として受け取り、stringを返す関数を定義。returnで文字列を返しているので、呼び出した側 (message) にその値が入る。const message = greet("Alice");
→greet("Alice")の返り値"Hello, Alice!"がmessageに代入される。
非同期関数(async function)の場合
async function fetchData(): Promise<string> {
return "データ取得完了";
}
const data = fetchData();
console.log(data); // → Promise { 'データ取得完了' }async function fetchData(): Promise<string> {}
→asyncをつけると 必ずPromiseを返す関数 になる。return "データ取得完了";だけど、asyncのおかげでPromise<string>になる。
await で Promise の中身を取り出す
async function fetchData(): Promise<string> {
return "データ取得完了";
}
async function main() {
const data = await fetchData(); // await で Promise の中身を取得
console.log(data); // → "データ取得完了"
}
main();fetchData()だけだとPromiseなので、中身を使うにはawaitが必要。await fetchData();で、返り値"データ取得完了"を変数dataに代入できる。
関数の型を明示的に書く
関数を変数に入れることもできる。
const add: (a: number, b: number) => number = function (a, b) {
return a + b;
};
const sum = add(3, 5);
console.log(sum); // → 8addの型(a: number, b: number) => numberを定義。function (a, b) { return a + b; }を代入。add(3, 5)を呼び出すと、返り値8がsumに入る。
関数を直接変数に入れる(アロー関数)
上と同じだけど、アロー関数で書くとこうなる:
const add = (a: number, b: number): number => a + b;
const sum = add(3, 5);
console.log(sum); // → 8(a: number, b: number): number => a + b;
→ 引数と返り値の型を指定して、シンプルに書ける。add(3, 5)の結果がsumに入る。
まとめ
✅ function 関数名(引数): 返り値の型 { return 値; }
✅ const 変数 = 関数名(引数); → 変数に返り値が入る
✅ async function は Promise を返すので await で中身を取り出す
✅ const 関数名 = (引数) => 返り値; も OK(アロー関数)