logo
/
例外(失敗)が起こりうる場合は全て引数で処理する
例外 内部実装はなんでも良い https://speakerdeck.com/akeno/typescriptfalseerachu-li-es2022falsexin-ji-neng-wotian-ete?slide=8
https://qiita.com/frozenbonito/items/e708dfb3ab7c1fd3824d
type MaybeResult<T> = T | Error; // ここはプロパティ式にしてもいいしなんでも良い

const isError = <T>(result: MaybeResult<T>): result is Error => result
instanceof Error;

const func = (flag: boolean): MaybeResult<string> => (flag ? "success"
: Error("error"));

const maybeResult = func(true);
if (isError(maybeResult)) {
  // 場合に応じたエラー処理
  const b = maybeResult;
  return;
}

// 通常の処理
const a: string = maybeResult;
特にTypeScriptではThrowableを表現できないので型システムの恩恵を受けるために全て正常系の異常系で扱う
間違ったコードは間違って見えるようにするで、例外はgotoのようなもの、と書いてあるがまさにそう。