【问题标题】:define object type with dynamic number of key and value and also that values can have string or number value使用动态数量的键和值定义对象类型,并且值可以具有字符串或数字值
【发布时间】:2021-10-01 03:16:31
【问题描述】:

我有一个带有 nextjs 和 typescript 的项目。我有一个名为 submit func 的函数。 此函数接受三个参数。类型为字符串类型的基端点和字符串类型,我的问题是第三个参数,我无法处理此参数的类型。我希望此参数接受具有动态键和值数量的对象,并且该值可以具有字符串或数字值。 这是我的提交函数

 interface values {
    [key: string]: object;
}
 const submitFunc = (type: string, baseEndPoint: string, values: values) => {
 //some code
 }

更多解释我想例如调用我的函数如下

submitFunc('login', '/auth/mobile', {
            'mobile': 0912855838,
            'password': 'serer434312'
        });

submitFunc('name', '/auth/name', {
            'name':'Max'
        });

等等

如果有人可以帮助我,我将非常感激

【问题讨论】:

    标签: javascript reactjs typescript next.js react-tsx


    【解决方案1】:
    interface values {
        [key: string]: string | number;
    }
    

    这将定义一个对象,其键为字符串,值为字符串或数字类型

    【讨论】:

      【解决方案2】:

      使用Record<string, string | number>:

      const submitFunc = (
        type: string,
        baseEndPoint: string,
        values: Record<string, string | number>
      ) => {
        // your code here
      };
      

      另外,在您的特定情况下,您也可以join multiple types

      type Values = { mobile: number; password: string } | { name: string };
      
      const submitFunc = (type: string, baseEndPoint: string, values: Values) => {
        // your code here
      };
      

      或者如果你想拥有这三个键的所有组合,你可以定义optional properties

      type Values = { mobile?: number; password?: string; name?: string };
      
      const submitFunc = (type: string, baseEndPoint: string, values: Values) => {
        // your code here
      };
      

      【讨论】:

        猜你喜欢
        • 2020-02-02
        • 2020-07-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-27
        • 2018-12-12
        • 2016-05-09
        • 1970-01-01
        相关资源
        最近更新 更多