TypeScriptで二つの型のうちの一つを返す方法


以下に、いくつかの方法と具体的なコード例を示します。

  1. ユニオン型を使用した関数の定義
function processData(): string | number {
  // 何らかの条件に基づいて、文字列または数値を返す
  if (/* 条件 */) {
    return "文字列";
  } else {
    return 42;
  }
}

上記の例では、processData関数は文字列または数値のいずれかを返す可能性があります。関数の戻り値の型注釈としてstring | numberを使用し、条件に基づいて適切な型を返します。

  1. ジェネリックスを使用した関数の定義
function processData<T extends string | number>(): T {
  // 何らかの条件に基づいて、T型の値を返す
  if (/* 条件 */) {
    return "文字列" as T;
  } else {
    return 42 as T;
  }
}

上記の例では、processData関数はジェネリック型Tを使用して、文字列または数値のいずれかを返すことができます。関数を呼び出す際に、具体的な型を指定することもできます。

  1. 独自の型を使用した関数の定義
type Result = {
  success: boolean;
  value: string | number;
};
function processData(): Result {
  // 何らかの条件に基づいて、Result型の値を返す
  if (/* 条件 */) {
    return { success: true, value: "文字列" };
  } else {
    return { success: true, value: 42 };
  }
}

上記の例では、Resultという独自の型を定義し、processData関数はResult型の値を返します。Result型にはsuccessvalueというプロパティがあり、valueは文字列または数値のいずれかを表します。

これらの方法を使用することで、TypeScriptで関数が二つの型のうちの一つを返すことができます。必要に応じて、それぞれの方法を適用してみてください。