根据对象从第一个参数推断第二个参数

科比

我有一个名为FormState的接口,用于在react中键入检查我的状态。我正在尝试创建一个函数,该函数将根据键更新状态,并使用传递的键从接口自动推断正确的类型。这是我的界面(和供参考的状态):

interface FormState {
    username: string
    password: string
    auto_login: boolean
    access_code: string
    method: number
    use_proxy: boolean
    ignore_invalid_certificates: boolean
}

const [state, setState] = useState<FormState>({
    /* state here */
})

和功能:

function updateState<T extends keyof FormState> (key: keyof FormState, value: FormState[T]): void {
    setState(old => {
        old[key as any] = value
        return old
    })
}

我希望能够调用此函数,比如说第一个参数为“ auto_login”,并且由于我的界面,它已经推断出第二个参数为布尔值。

我当前的实现无法正常工作-它会推断每种可能的类型,而不是正确的类型。我也不认为我应该通过类型参数,但是如果需要的话,那么确定。

谢谢。

科比

没关系,我很傻。我意识到我可以使用key: T而不是key: keyof FormState来解决我的问题:

function updateState<T extends keyof FormState> (key: T, value: FormState[T]): void {
    setState(old => {
        old[key as any] = value
        return old
    })
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

c ++ 11获取第一个(第二个,等等)参数的类型,类似于result_of

来自分类Dev

当第二个参数的生成依赖于第一个参数时,如何编写带有两个参数的测试?

来自分类Dev

部分应用的Function2具有第一个和第二个参数

来自分类Dev

函数模板:默认第一个模板参数为第二个

来自分类Dev

如何从第二个对象更改第一个对象的值?

来自分类Dev

如果第一个参数为false,php是否会评估or语句的第二个参数?

来自分类Dev

在具有对象(第二个参数)的数组(第一个参数)上使用for循环迭代

来自分类Dev

Azure Devops Pipeline:第二个参数取决于第一个参数

来自分类Dev

如何根据第一个规则选择第二个通配符?

来自分类Dev

返回作为第二个参数传递的数组中第一个参数的索引的函数

来自分类Dev

根据第一个表单提交触发对第二个表单的验证

来自分类Dev

根据第一个活动更改第二个活动的标题

来自分类Dev

当第二个参数的生成依赖于第一个参数时,如何编写带有两个参数的测试?

来自分类Dev

在第一个语句中声明变量,然后在第二个语句中设置为参数

来自分类Dev

如何从第二个引用函数的第一个参数?(python 2.7)

来自分类Dev

如何获得第一个和第二个对象

来自分类Dev

根据第一个创建第二个array_rand

来自分类Dev

根据第二个值找到内部数组的第一个值

来自分类Dev

为什么第二个参数没有根据第一个参数进行过滤?

来自分类Dev

函数模板:默认第一个模板参数为第二个

来自分类Dev

使用第一个查询的结果作为第二个查询的参数嵌入MS SQL查询

来自分类Dev

如何根据第一个<select>选项填充第二个<select>

来自分类Dev

ES6 默认参数,解构对象作为第二个参数引用第一个参数

来自分类Dev

打字稿,限制第二个参数依赖于第一个参数类型

来自分类Dev

如何根据第一个 DropdownButton 的选择加载第二个 DropdownButton

来自分类Dev

根据第一个设置第二个游戏对象的位置和旋转

来自分类Dev

根据第一个的值在第二个可观察对象上调用订阅

来自分类Dev

根据第一个 Droplist 的值填充第二个 Droplist

来自分类Dev

TypeScript:如何根据第一个参数省略函数中的第二个参数

Related 相关文章

  1. 1

    c ++ 11获取第一个(第二个,等等)参数的类型,类似于result_of

  2. 2

    当第二个参数的生成依赖于第一个参数时,如何编写带有两个参数的测试?

  3. 3

    部分应用的Function2具有第一个和第二个参数

  4. 4

    函数模板:默认第一个模板参数为第二个

  5. 5

    如何从第二个对象更改第一个对象的值?

  6. 6

    如果第一个参数为false,php是否会评估or语句的第二个参数?

  7. 7

    在具有对象(第二个参数)的数组(第一个参数)上使用for循环迭代

  8. 8

    Azure Devops Pipeline:第二个参数取决于第一个参数

  9. 9

    如何根据第一个规则选择第二个通配符?

  10. 10

    返回作为第二个参数传递的数组中第一个参数的索引的函数

  11. 11

    根据第一个表单提交触发对第二个表单的验证

  12. 12

    根据第一个活动更改第二个活动的标题

  13. 13

    当第二个参数的生成依赖于第一个参数时,如何编写带有两个参数的测试?

  14. 14

    在第一个语句中声明变量,然后在第二个语句中设置为参数

  15. 15

    如何从第二个引用函数的第一个参数?(python 2.7)

  16. 16

    如何获得第一个和第二个对象

  17. 17

    根据第一个创建第二个array_rand

  18. 18

    根据第二个值找到内部数组的第一个值

  19. 19

    为什么第二个参数没有根据第一个参数进行过滤?

  20. 20

    函数模板:默认第一个模板参数为第二个

  21. 21

    使用第一个查询的结果作为第二个查询的参数嵌入MS SQL查询

  22. 22

    如何根据第一个<select>选项填充第二个<select>

  23. 23

    ES6 默认参数,解构对象作为第二个参数引用第一个参数

  24. 24

    打字稿,限制第二个参数依赖于第一个参数类型

  25. 25

    如何根据第一个 DropdownButton 的选择加载第二个 DropdownButton

  26. 26

    根据第一个设置第二个游戏对象的位置和旋转

  27. 27

    根据第一个的值在第二个可观察对象上调用订阅

  28. 28

    根据第一个 Droplist 的值填充第二个 Droplist

  29. 29

    TypeScript:如何根据第一个参数省略函数中的第二个参数

热门标签

归档