Typescriptでのエラー型の定義
5914 ワード
はじめに。
typescriptにおいて、エラーのハンドリングのためにエラーをthrowしてしまうと、インターフェースからはエラーが発生する可能性を読み取れないという問題が提起されていました。
自分もこれを問題視しています。この問題に対して、Result型を定義することによりこの問題を回避していますので、なにかの参考になれば幸いです。
Result型の導入
以下を定義します。
Result.ts
export type Result<Success, Error> = Ok<Success> | Err<Error>;
export type Ok<Success> = {
data: Success;
type: "success";
};
export type Err<Error> = {
data: Error;
type: "err"
};
使い方
まず、Ok
とErr
を生成する関数を先に定義しておきます。
export const ok = <T>(data: T): Ok<T> => {
return {
data,
type: "success"
};
};
export const err = <T>(data: T): Err<T> => {
return {
data,
type: "err"
};
};
これらを用いた例が以下になります。(typescript4.6を使用しています。)
const result: Result<Success, Error> = someFunction();
const { data, type } = result;
if (type === "err") {
/**
* エラーのときの処理
* このときのdataはError型です。
*/
return
}
/**
* 正常なときの処理
* このときのdataはSuccess型です。
*/
Author And Source
この問題について(Typescriptでのエラー型の定義), 我々は、より多くの情報をここで見つけました https://zenn.dev/seitoo/articles/d486087908dc24著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Collection and Share based on the CC protocol