如何将数组数组转换为具有索引签名的对象?

How to transform an array of arrays into an object with index signature?

所以我有两个类型 B 和 A,以及一个数组 a,我应该将其转换为类型 B。

type A = Array<[string, number, string]>;

type B = {
    [name: string]:
        {
            name: string,
            age: number,
            city: string
        }
}

const a: A = [
    ['name1', 10, 'city1'],
    ['name2', 33, 'city2'],
    ['name3', 61, 'city3'],
    ['name4', 60, 'city4']
];

export const b: B = ???

由于类型 B 中的索引签名 [name: string],我不知道如何转换数组。通常我通过 array.map(value => {}) 进行转换,但在这里我找不到包含索引的方法地图方法中的签名。

B描述了一个对象的形状:

export const b: B = {
  name1: {
    name: 'name1',
    age: 10,
    city: 'city1'
  }
};

但是如果你想要一个 B 的数组,你可以

export const b: B[] = a.map(([name, age, city]) => ({ [name]: { name, age, city } }));