通过值数组定义接口

如果我有一个带有输入道具的常量和一个返回输入 ID 及其默认值的函数,如下所示:

const Inputs = [{label: "myInput1", id: "myId1"}, {label: "myInput2" , id: "myId2" }]    
const getInputValues = () => Inputs.reduce( (acc, item) => ({...acc, [item.id] : 123  }), {} )

如何定义getInputValuesTypeScript 的返回类型?

代码


慕码人2483693
浏览 104回答 2
2回答

紫衣仙女

我能想到的唯一方法是对常量使用 const 断言Inputs:const Inputs = [&nbsp; {label: "myInput1", id: "myId1"},&nbsp; {label: "myInput2", id: "myId2"},] as const;type InputIds = typeof Inputs[number]['id'];function getInputValues(): Record<InputIds, number> {&nbsp; return Inputs.reduce((acc, item) => {&nbsp; &nbsp; return {...acc, [item.id]: 123};&nbsp; }, {} as Partial<Record<InputIds, number>>) as Record<InputIds, number>;}

慕工程0101907

您所能期望的最好的是Record<string, number>。const getInputValues = ():Record<string,number> =>      Inputs.reduce( (acc, item) => ({...acc, [item.id] : 123  }), {})为了更好的类型安全,您可以选择Record<string, number | undefined>强制您对访问的任何值进行类型检查。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript