实现 RequireAllOrNone ,当设置 age 属性时,gender 属性也会变成必填
Opened this issue · 0 comments
zhengyimeng commented
interface Person {
name: string;
age?: number;
gender?: number;
}
type RequireAllOrNone<T, K extends keyof T> =
| (Omit<T, K> & Required<Pick<T, K>>)
| { [Key in keyof T]: Key extends K ? never : T[Key] };
const p1: RequireAllOrNone<Person, "age" | "gender"> = {
name: "lolo",
};
const p2: RequireAllOrNone<Person, "age" | "gender"> = {
name: "lolo",
age: 7,
gender: 1,
};
// Error
const p3: RequireAllOrNone<Person, "age" | "gender"> = {
name: "lolo",
age: 7,
};