gpt4 book ai didi

typescript - 如何从函数参数类型中省略第一个参数?

转载 作者:行者123 更新时间:2023-12-03 08:31:28 29 4
gpt4 key购买 nike

我有一个来自第三方库函数的sendMessage,其中包含参数:

function sendMessage(chatId: number | string, text: string, extra?: tt.ExtraEditMessage)

我想创建另一个函数来向特定用户发送消息。我希望这个函数具有原始函数的所有参数:

export async function sendMessageToAdmin(text: string, extra?: tt.ExtraEditMessage)

但我希望此类型声明是 DRY 的,并在更新第三方依赖项时自动更新,因此我可以使用 Parameters 实用程序类型:

type SendMessageParameters = Parameters<sendMessage>

export async function sendMessageToAdmin(...parameters: SendMessageParameters)

但是,我还想省略第一个参数 chatId,因为我将自行设置它。不幸的是,Omit 实用程序类型仅适用于属性,不适用于元组成员。

如何构造一个类型,该类型将具有函数的所有参数,而不是第一个参数或具有特定名称的参数?

最佳答案

您只需要返回元组的尾部

function sendMessage(foo: number, baz: string, bar: number[]) { }

type Tail<T extends unknown[]> = T extends [infer Head, ...infer Tail] ? Tail : never;

function otherFunc(...parameters:Tail<Parameters<typeof sendMessage>>){} // baz: string, bar: number[]

关于typescript - 如何从函数参数类型中省略第一个参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64958413/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com