Я сделал
пример в 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',
})