TypeScriptでprocess.exit()ラッパーの後をデッドロジック扱いにする

TS で process.exit() をラップしたカスタム exit を作った時に静的解析のフローが壊れたので、その対策。
因みにこの制御フローのことを Control Flow Analysis と呼ぶそうです。TS 系の文書では CFA と略されていることが多い。

問題事例

静的解析例の 7-8 行目のように次の行から先がデッドコードになって欲しいのですが、上手くいきません。これを上手くいくようにします。

カスタム exit 例 静的解析例
file file

確認環境

Env Ver
TypeScript 4.8.4

サンプルコード

オブジェクトでラップして、カスタム exit 関数の戻り値を never で指定してやると上手くいくようになります。
因みにこれTS の仕様らしく、上手くやる方法はあんまりなさそう。
実はアロー関数ではなく function を使えば解決したりしますが、それはなんか嫌なので…

example.ts

type ErrorPayload = {
  message: string;
  code: number;
};

type ExampleExit = {
  exit: (err: ErrorPayload) => never;
};

const exit = (err: ErrorPayload) => {
  process.exit(err.code);
};

export const Example: ExampleExit = { exit };

implements.ts

import { Example } from './example';

Example.exit({ message: 'exit', code: 1 });
console.log(1);