Рекомендуется использовать сопоставленные типы поверх явно частичных типов, см. https://www.typescriptlang.org/docs/handbook/advanced-types.html#mapped-types
, т. Е. Вместо
interface PersonPartial {
name?: string;
age?: number;
}
мы будем использовать
interface Person {
name: string;
age: number;
}
type Partial<T> = {
[P in keyof T]?: T[P];
}
type PersonPartial = Partial<Person>;
Можно ли отобразить в другом направлении, что-то вроде
type NotPartial<T> = {
[P in keyof T]!: T[P];
}
type Person = NotPartial<PersonPartial>;
, поскольку у меня есть сгенерированный, который создает частичные интерфейсы, которые нарушают мою проверку типов из-за утки.