• ..

AWS

    never 型

    neverは、 TypeScript で「あるはずない」を表現するための型です。

    正常に return されない可能性のある関数で使う

    これは例えば、

    1. エラーでthrowされる
    2. process.exitで途中で処理を途中で中断する

    などの時neverが当てはまります。

    const fn: () => never = () => {
      throw new Error('...');
      // process.exit(1)
    }

    ただDefinitelyTyped/DefinitelyTypedで型ファイルを追加しようとした時に、never型を使っていたら「neverいらないから削除して」と言われたのでvoidと同じで基本省略する形で統一すればいいかもしれません。

    Conditional Types でありえない状態の戻り型に指定

    Conditional Types で型を変換する時にstringnumberしか期待しないのにFooという良くわからないものが来てしまった時に、想定外なのでneverに設定するということが良くあると思います。

    type StringOrNumber<T> =
      T extends string
        ? string
        : T extends number
        ? number
        : never