如果我有一个带有输入道具的常量和一个返回输入 ID 及其默认值的函数,如下所示:const Inputs = [{label: "myInput1", id: "myId1"}, {label: "myInput2" , id: "myId2" }]
const getInputValues = () => Inputs.reduce( (acc, item) => ({...acc, [item.id] : 123 }), {} )如何定义getInputValuesTypeScript 的返回类型?代码
2 回答
紫衣仙女
TA贡献1839条经验 获得超15个赞
我能想到的唯一方法是对常量使用 const 断言Inputs:
const Inputs = [
{label: "myInput1", id: "myId1"},
{label: "myInput2", id: "myId2"},
] as const;
type InputIds = typeof Inputs[number]['id'];
function getInputValues(): Record<InputIds, number> {
return Inputs.reduce((acc, item) => {
return {...acc, [item.id]: 123};
}, {} as Partial<Record<InputIds, number>>) as Record<InputIds, number>;
}
慕工程0101907
TA贡献1887条经验 获得超5个赞
您所能期望的最好的是Record<string, number>
。
const getInputValues = ():Record<string,number> => Inputs.reduce( (acc, item) => ({...acc, [item.id] : 123 }), {})
为了更好的类型安全,您可以选择Record<string, number | undefined>
强制您对访问的任何值进行类型检查。
添加回答
举报
0/150
提交
取消