问题描述
我正在使用 twilio-node
包,还有 fetch
function:
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>
// ^^^
>;
解决方法
我对 Twilio 一无所知,如果我误导了您,请提前道歉,但根据您的代码,phoneNumbers
是一个函数,而不仅仅是一个属性。因此,您需要 fetch
的返回类型上的 twilioClient.lookups.v1.phoneNumbers
函数的返回类型。类似的东西:
type LookupResponseType = ThenArg<
ReturnType<
ReturnType<
typeof twilioClient["lookups"]["v1"]["phoneNumbers"]
>["fetch"]
>
>;