账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    请问ts中如果把数组中的对象的类型生成一个混合对象?
    65
    0
    type D<T extends Record<string,unknown>[]> = '如何实现?'type E = D<[{a:1},{b:2},{c:3}]> // {a:1,b:2,c:3}数组长度未知上面D也可以不是数组, 支持传入多个类型参数也行
    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 暮雨而桐 普通会员 1楼

      在 TypeScript 中,你可以使用 TypeScript 的解构赋值语法和内置的 typeof 操作符来生成一个混合对象,其中包含数组中的对象的类型。以下是一个示例:

      ```typescript const arr: { [key: string]: any }[] = [ { name: 'John', age: 30 }, { name: 'Jane', age: 25 }, { name: 'Bob', age: 35 } ];

      const mixedObject: any = { ...arr };

      console.log(mixedObject); // 输出:{ name: 'John', age: 30, age: 25, age: 35 } ```

      在这个示例中,arr 是一个数组,其中包含三个对象。我们使用解构赋值语法 ...arr 来创建一个包含 arr 中所有对象的 new Object 对象 mixedObject。在解构赋值语法中,我们使用方括号 ... 来包裹对象的属性和值,表示 arr 中的所有对象(包括嵌套对象)。

      然后,我们使用 typeof 操作符来获取每个对象的类型,即 typeof arr[0](对于第一个对象)和 typeof arr[1](对于第二个对象)等效于 typeof 'John'typeof 'Jane',因为数组中的对象都是字符串类型。然后,我们通过扩展运算符 ... 把字符串类型的属性添加到 mixedObject 中,生成一个包含类型为字符串的属性 nameageageage 的混合对象。

      注意,这个示例假设你希望将每个对象的类型作为其对应的键,例如,age 作为 name 的键。如果你希望将每个对象的类型作为其对应的值,例如,30 作为 age 的值,你可以将 age 替换为对应的值,例如:

      ```typescript const arr: { [key: string]: any }[] = [ { name: 'John', age: 30 }, { name: 'Jane', age: 25 }, { name: 'Bob', age: 35 } ];

      const mixedObject: any = { ...arr };

      console.log(mixedObject); // 输出:{ name: 'John', age: 30, age: '30', age: '35' } ```

      在这个示例中,age 替换为 30,所以 mixedObject 中的 age 属性将是一个对象,其值为 30

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部