2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[TypeScript]コールバックのタイプは基本的にオプショナル

Posted at

forEachのようなメソッドを使うと、以下のようにvalue, index, arrayを持ったコールバックを使うことができる。このコールバックを型定義してみよう。

[10, 20, 30].forEach(
    (value: number, index: number, array: number[]) => {
        console.log();
    }
);

しかし、引数を省略して使う時も多い。ということは型に?をつけるべきでは?と思い、調べてみた。

// indexやarrayを使わないときも多い
[10, 20, 30].forEach(
    (value: number) => {
        console.log();
    }
);

// 全部省略することも
[10, 20, 30].forEach(
    () => {
        console.log();
    }
);

公式の型定義

TypeScript公式でforEachの型定義をしているところを見ると以下の通りである。

lib.es5.d.ts
forEach(
    callbackfn: (
        value: T, 
        index: number, 
        array: readonly T[]
    ) => void, 
    thisArg?: any
): void;

callbackfnの引数を見てみるとオプショナルの?がついていないことがわかる。

なぜ?

基本的にTypeScriptではコールバックの引数を全てオプショナルだと決めている。
そのため、型定義の時には?をつけなくてもいい。

どちらかというと、読む時もコールバックの引数はオプショナルがついている前提で読む方がいい。

参考

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?