Typescript 复合函数的正确类型是什么?

Typescript 复合函数的正确类型是什么?,typescript,Typescript,我正在尝试创建这个复合函数,我想键入这个成员函数。您可以看到,它检查道具,并将根据传递的道具返回一个成员 键入此函数的最佳方式是什么 async function member(props: any) { const member = await (async () => { if (props.member) return member if (props.id) return this.memberRepository.readOneByIdOrFail(prop

我正在尝试创建这个复合函数,我想键入这个
成员
函数。您可以看到,它检查道具,并将根据传递的道具返回一个
成员

键入此函数的最佳方式是什么

async function member(props: any) {
  const member = await (async () => { 
    if (props.member) return member
    if (props.id) return this.memberRepository.readOneByIdOrFail(props.id)
    if (props.memberId) return this.memberRepository.readOneByIdOrFail(props.memberId)
    if (props.uuid) return this.memberRepository.readOneByUuidOrFail(props.uuid)
    if (props.memberUuid) return this.memberRepository.readOneByUuidOrFail(props.memberUuid)
    if (props.organizationId && props.contactId) return this.memberService.readByUnique(props)
    throw new Error(`unable to ${MemberService.name}.member`)
  })()
  return { member }
}

member({ id: 1, uuid: '123456' })
member({ id: undefined, uuid: '123456' })
member({ uuid: undefined, organizationId: 1, contactId: 1 })

这个问题似乎更适合我。我不确定是否有一个最好的方式来写它,但是你可能会考虑改进你所拥有的。请考虑编辑这个问题中的代码来构成一个如所描述的。理想情况下,可以将代码放入一个独立的IDE中,以演示您的问题。