kosuha
@kosuha

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

Я сделал пример в TS плейграунде

У меня такая функция фабрика объектов
function defineModelFactory<T>(defaults: Partial<T> = {}) {
  return (
    required: Partial<T> = {},
    changed: Partial<T> = {}
  ): T => {
    return {
      ...defaults,
      ...required,
      ...changed
    } as T
  }
}


Она же и занимается изменением объектов, и я хочу чтобы TS атвтоматически
исключал из типа аргумента required поля которые могли быть переданы в defaults
type Animal = {
  name: string,
  kind: string,
  age: number
}

const catsFactory = defineModelFactory<Animal>({
  kind: 'cat',
})
// Хочу чтобы тут ругалось что я не задал age и не ругалось на kind тк его я передал в defaults
const boris = catsFactory({
  name: 'boris',
})
  • Вопрос задан
  • 84 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы