TypeScript как сделать функцию — фабрику объектов с возможностью задать дефолтные поля объекта?

Чтобы создать функцию-фабрику объектов с возможностью задать дефолтные поля объекта в TypeScript, можно использовать синтаксис параметров по умолчанию и оператор spread.

Вот пример реализации такой функции-фабрики:

// Определяем интерфейс для объекта
interface MyObject {
  id: number;
  name: string;
  age: number;
}

// Функция-фабрика
function createObject({ id = 0, name = "", age = 0 }: Partial<MyObject>): MyObject {
  return { id, name, age };
}

// Пример использования
const obj1 = createObject({ id: 1, name: "John", age: 25 });
console.log(obj1); // { id: 1, name: 'John', age: 25 }

const obj2 = createObject({ id: 2, name: "Alice" });
console.log(obj2); // { id: 2, name: 'Alice', age: 0 }

const obj3 = createObject({});
console.log(obj3); // { id: 0, name: '', age: 0 }

В данном примере, мы определили интерфейс MyObject, который описывает структуру объекта. Функция createObject принимает параметр типа Partial<MyObject>, используя синтаксис параметров по умолчанию и оператор spread. Затем, внутри функции, мы создаем новый объект, используя заданные значения или значения по умолчанию. Функция возвращает объект типа MyObject.

В примере использования мы вызываем createObject с различными наборами значений. Если значения не указаны, то будут использованы значения по умолчанию.

Надеюсь, это поможет вам создать функцию-фабрику объектов с возможностью задания дефолтных полей в TypeScript.