ts 如何根据函数联合类型的参数返回不同类型?

type A = 'a1' | 'a2'


type Rt1 = string
type Rt2 = number

function foo(a: A) {
  return //  ...
}

如果 foo('a1') 返回类型为 Rt1,如果 foo('a2') 返回类型为 Rt2。请问如何定义这个返回类型?

阅读 2.4k
3 个回答

你可能需要的是重载

export function foo(a: 'a2'): number;
export function foo(a: 'a1'): string;
export function foo(a: 'a1' | 'a2'): string | number {
  return //  ...
}

const v1 = foo('a1'); // v1 is string
const v2 = foo('a2'); // v2 is number

这样???

function foo(a: A) : Rt1 | Rt2{
  if(a=='a1'){
    return 12
  }else{
    return 'hello'
  }
}
logo
Microsoft
子站问答
访问
宣传栏