gpt4 book ai didi

typescript - 如何约束对象的键但将值推断为常量?

转载 作者:行者123 更新时间:2023-12-04 10:59:39 25 4
gpt4 key购买 nike

给定这个对象,有没有办法将其值推断为 const同时确保 key 包含在 Field 中联盟?

type Field = 'name' | 'isHappy';

const fieldTypes: { [field in Field]: string } = {
name: 'text',
isHappy: 'checkbox',
};

我的目标是让 fieldTypes有类型:
{
name: 'text';
isHappy: 'checkbox';
}

代替
{
name: string;
isHappy: string;
}

最佳答案

不仅仅是变量声明。变量类型要么从分配的值中推断出来,要么由类型注释指定,​​没有中间立场。

您可以改用一个函数,该函数可以具有推断和约束的类型:

type Field = 'name' | 'isHappy';

function createFields<T extends Record<Field, V>, V extends string>(o: T) {
return o;
}

const fieldTypes = createFields({
name: 'text',
isHappy: 'checkbox',
})

// Typed as:
// const fieldTypes: {
// name: "text";
// isHappy: "checkbox";
// }

Playground Link

关于typescript - 如何约束对象的键但将值推断为常量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58914161/

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