Partial and Required: Toggling Optionality
Make all properties optional or required at once.
Partial and Required: Toggling Optionality is a free TypeScript Academy lesson on CoddyKit — lesson 1 of 4. You can read the complete lesson below for free — then practise it hands-on in the browser with a built-in code editor and a 24/7 AI tutor. It is part of the TypeScript Academy learning path, one of 4 lessons in the course, and your progress syncs across the web and the CoddyKit app.
Welcome
Partial<T>
interface User { id: number; name: string; email: string; }
type PartialUser = Partial<User>;
// { id?: number; name?: string; email?: string; }Partial in Update Functions
function updateUser(id: number, changes: Partial<User>): User {
const existing = findUser(id)!;
return { ...existing, ...changes };
}Required<T>
type RequiredUser = Required<User>;
// All properties are now required — including those that were optionalRequired for Config Validation
interface Config { host?: string; port?: number; }
const defaults: Required<Config> = { host: 'localhost', port: 3000 };
function createConfig(opts: Config): Required<Config> {
return { ...defaults, ...opts };
}How Partial Is Implemented
type Partial<T> = { [K in keyof T]?: T[K] };
// Equivalent to: { [K in keyof T]+?: T[K] }How Required Is Implemented
type Required<T> = { [K in keyof T]-?: T[K] };Deep Partial
type DeepPartial<T> = {
[K in keyof T]?: T[K] extends object ? DeepPartial<T[K]> : T[K]
};Combining Partial and Required
// id required, everything else optional
type UpsertUser = Required<Pick<User, 'id'>> & Partial<Omit<User, 'id'>>;Partial vs Optional Properties in Interface
Type Inference with Partial
function show(u: Partial<User>) {
if (u.name !== undefined) {
console.log(u.name.toUpperCase()); // safe
}
}Quick Check
Recap
Frequently asked questions
Is the “Partial and Required: Toggling Optionality” lesson free?
Yes — the full text of “Partial and Required: Toggling Optionality” is free to read here on the web, and the TypeScript Academy course includes 4 lessons in total. To practise it interactively (a built-in code editor and a 24/7 AI tutor) and unlock the rest of the TypeScript Academy course, upgrade to CoddyKit PRO.
What will I learn in “Partial and Required: Toggling Optionality”?
Make all properties optional or required at once. You practise TypeScript Academy with hands-on code you run directly in the browser, and a 24/7 AI tutor answers your questions as you work through the lesson.
Do I need any experience to start TypeScript Academy?
No prior experience is required. TypeScript Academy on CoddyKit is structured for beginners through advanced learners; this is — lesson 1 of 4, so you can start here or from the beginning and move at your own pace.
How long does the “Partial and Required: Toggling Optionality” lesson take?
Most CoddyKit lessons take about 5–10 minutes. Each one is bite-sized and interactive, so you make steady progress and pick up exactly where you left off across the web and the app.
Can I write and run code in this TypeScript Academy lesson?
Yes. Every TypeScript Academy lesson includes a built-in code editor, so you write and run real code right in your browser and get instant AI feedback — no local setup required.
All lessons in this course
- Partial and Required: Toggling Optionality
- Pick and Omit: Selecting Properties
- Record: Mapping Keys to Value Types
- Readonly, Exclude, Extract, NonNullable