gpt4 book ai didi

javascript - 如何将元组并集转换为对象类型

转载 作者:行者123 更新时间:2023-12-02 02:27:01 26 4
gpt4 key购买 nike

我有一个类型InputData,它是string或元组。我想将其转换为对象。

type InputType = File | string | boolean;
type InputData = string | [string, InputType]

type test = "username" | "password" | ["isAbove18", boolean] | ["photo", File];

在上面的类型中,只有string(给出了输入字段的名称),其类型应设置为string。我有通用类型

type AddDefaultValues<Data extends InputData> = Data extends string ? [Data, string] : Data 
//AddDefaultValues<test> = ["username", string]| ["password", string] | ["isAbove18", boolean] | ["photo", File]

现在我的要求是将上面的类型映射到如下所示的对象。

{username: string, password: string, isAbove18: boolean, photo: File}

我尝试了很长时间,但什么也没弄清楚。请帮我解决这个问题...

最佳答案

您可以使用带有键重命名的对象映射:

type test = "username" | "password" | ["isAbove18", boolean] | ["photo", File];

type ObjMap = {
[K in test as K extends [infer F, infer _] ? F : K]: K extends [infer _, infer S] ? S : string;
};

Playground link

另请参阅:

关于javascript - 如何将元组并集转换为对象类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65521795/

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