Как объявить Обект в котором произвольный набор полей, но все поля — Array?

Чтобы объявить объект в TypeScript, в котором все поля являются массивами, вы можете использовать обощенный тип Record с типом Array. Общий синтаксис объявления такого объекта будет выглядеть следующим образом:

type MyObject = Record<string, Array<any>>;

В данном примере мы использовали обощенный тип Record<string, Array<any>>, который означает, что объект MyObject должен иметь ключи типа string, а значение каждого ключа должно быть массивом, где any является типом элементов массива.

Пример использования:

const myObj: MyObject = {
  field1: [1, 2, 3],
  field2: ['a', 'b', 'c'],
  field3: [true, false]
};

console.log(myObj.field1); // [1, 2, 3]
console.log(myObj.field2); // ['a', 'b', 'c']
console.log(myObj.field3); // [true, false]

В этом примере myObj является объектом типа MyObject, где каждое поле является массивом. Вы можете добавлять и изменять поля объекта, но каждое поле должно быть массивом.

Также, если вы хотите, чтобы поля имели конкретный тип элементов массива (а не any), вы можете указать это вместо Array<any>. Например, если вы хотите, чтобы все поля были массивами чисел:

type MyObject = Record<string, Array<number>>;

Теперь каждое поле объекта MyObject должно быть массивом чисел.