typescript 如何对根据参数值返回不同类型的函数进行类型检查?

m4pnthwp  于 2023-03-09  发布在  TypeScript
关注(0)|答案(1)|浏览(139)

我有一个函数,它接受一个参数,并根据该参数的值返回一个不同类型的值。
例如:

function foo(arg: 'a' | 'b') {
  if (arg === 'a') {
    return { prop1: 'hello', prop2: 123 };
  } else {
    return [1, 2, 3];
  }
}

我试着对这个函数进行类型检查,但是我不知道该怎么做。具体来说,我想确保如果参数是'a',返回值具有属性prop1和prop2,如果参数是'b',返回值是一个数字数组。
我试过使用条件类型,但我不太确定如何使用它们。有人能帮我吗?

v64noz0r

v64noz0r1#

可以使用函数重载:

function foo(arg: 'a'): { prop1: string; prop2: number };
function foo(arg: 'b'): number[];
function foo(arg: 'a' | 'b') {
  if (arg === 'a') {
    return { prop1: 'hello', prop2: 123 };
  } else {
    return [1, 2, 3];
  }
}

Playground

相关问题