2

我正在使用twilio-nodepkg 并且有以下fetch功能

lookupResponse = await twilioClient.lookups.v1.phoneNumbers('+123').fetch({type: 'carrier'});

具有明确定义的返回类型,Promise<PhoneNumberInstance>. 由于我lookupResponse预先初始化,我想直接提取/推断函数的返回类型。

现在,我已经知道如何解开 Promise 的类型:

export type ThenArg<T> = T extends PromiseLike<infer U> ? U : T;

但是如何指定先前链接的phoneNumbers函数的参数呢?试试这个:

let lookupResponse: ThenArg<
  ReturnType<typeof twilioClient.lookups.v1.phoneNumbers.fetch>
>;

抛出Property 'fetch' does not exist on type 'PhoneNumberListInstance'

我需要在这里通过什么?

let lookupResponse: ThenArg<
   ReturnType<typeof twilioClient.lookups.v1.phoneNumbers.???.fetch>
//                                                        ^^^            
>;
4

1 回答 1

3

如果我以错误的方式引导您,我对 Twilio 一无所知,因此提前道歉,但根据您的代码,phoneNumbers它是一个函数,而不仅仅是一个属性。因此,您需要fetch返回类型为twilioClient.lookups.v1.phoneNumbers. 就像是:

type LookupResponseType = ThenArg<
    ReturnType<
        ReturnType<
            typeof twilioClient["lookups"]["v1"]["phoneNumbers"]
        >["fetch"]
    >
>;

带样机的游乐场链接

于 2021-05-29T11:23:06.173 回答