Partial and Required
type Todo = { title: string; completed?: boolean; address?: { street?: string; }; }; type RequiredPick<T, Key extends keyof T> = Required<Pick<T, Key>> & T; type PartialPick<T, Key extends keyof T> = Partial<Pick<T, Key>> & Omit<T, Key>; type RequiredTodoForm = RequiredPick<Todo, "address" | "completed">; type PartialFormTodo = PartialPick<Todo, "title">; const test: Required<Todo> = { title: "Foo", completed: true, address: { street: "Bar", }, }; const requiredTodo: RequiredTodoForm = { title: "Hello World", completed: true, address: { street: "test", }, }; const partialTodo: PartialFormTodo = { completed: true, };