为了账号安全,请及时绑定邮箱和手机立即绑定

通过值数组定义接口

通过值数组定义接口

慕码人2483693 2023-04-01 16:08:53
如果我有一个带有输入道具的常量和一个返回输入 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>;

}


查看完整回答
反对 回复 2023-04-01
?
慕工程0101907

TA贡献1887条经验 获得超5个赞

您所能期望的最好的是Record<string, number>

const getInputValues = ():Record<string,number> => 
    Inputs.reduce( (acc, item) => ({...acc, [item.id] : 123  }), {})

为了更好的类型安全,您可以选择Record<string, number | undefined>强制您对访问的任何值进行类型检查。


查看完整回答
反对 回复 2023-04-01
  • 2 回答
  • 0 关注
  • 101 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信