gpt4 book ai didi

typescript 将列表映射到函数参数

转载 作者:行者123 更新时间:2023-12-05 05:44:33 26 4
gpt4 key购买 nike

我有一个参数列表,看起来有点像这样:

const args: FeatureEventArg[] = [
{
name: 'username',
type: 'string',
},
{
name: 'message',
type: 'string',
},
{
name: 'totalMessagesSent',
type: 'number',
},
];

我的目标是获取该列表并使用某种类型,例如 FeatreEventArgs<typeof args>或其他东西,以获取最终看起来像这样的回调函数的参数:

function callback(username: string, message: string, totalMessagesSent: number) {
// Other stuff
}

我已经设法通过大量 fideling 和大量 extends "string" ? string 获得类型部分有点事。但是名字只是arg_0而不是上面对象中的名称。

无论如何,如果您对我如何实现此目标或问题的任何其他解决方案有任何提示或想法,请告诉我。

最佳答案

您需要删除 : FeatureEventArg[] 并将对象数组 解释为 const 以便保留准确的字符串类型。然后,您可以映射数组的 [number] 值,将名称提取为键,将类型提取为值(通过将字符串转换为相应类型的辅助类型)。

const args = [
{
name: 'username',
type: 'string',
},
{
name: 'message',
type: 'string',
},
{
name: 'totalMessagesSent',
type: 'number',
},
] as const;
type Args = typeof args;
type ToPrimitive<T> =
T extends 'string' ? string
: T extends 'number' ? number
: never;

type ArgsObj = {
[T in Args[number] as T["name"]]: ToPrimitive<T["type"]>
}

关于 typescript 将列表映射到函数参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71590908/

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