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
子站问答
访问
宣传栏