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);