0
0
Typescriptprogramming~20 mins

Partial type in Typescript - Practice Problems & Coding Challenges

Choose your learning style9 modes available
Challenge - 5 Problems
🎖️
Partial Type Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
Predict Output
intermediate
2:00remaining
What is the output of this code using Partial?
Consider the following TypeScript code using the Partial type. What will be logged to the console?
Typescript
interface User {
  id: number;
  name: string;
  email: string;
}

function updateUser(user: User, updates: Partial<User>): User {
  return { ...user, ...updates };
}

const user1: User = { id: 1, name: "Alice", email: "alice@example.com" };
const updatedUser = updateUser(user1, { email: "alice.new@example.com" });
console.log(updatedUser);
A{"id":1,"name":"Alice","email":"alice.new@example.com"}
B{"id":1,"name":"Alice"}
CTypeScript compilation error
D{"email":"alice.new@example.com"}
Attempts:
2 left
💡 Hint
Partial allows you to provide some or all properties of the type.
Predict Output
intermediate
2:00remaining
What error does this code raise?
What error will this TypeScript code produce?
Typescript
interface Product {
  id: number;
  name: string;
  price: number;
}

function setProductName(product: Partial<Product>, name: string) {
  product.name = name;
}

const p: Partial<Product> = {};
setProductName(p, "Book");
console.log(p.name.length);
Aundefined
BSyntaxError
CTypeError: Cannot read property 'length' of undefined
DNo error, outputs 4
Attempts:
2 left
💡 Hint
Objects are passed by reference in JavaScript/TypeScript, so the function mutates the original `p` object.
🔧 Debug
advanced
2:00remaining
Why does this Partial type assignment cause an error?
This code causes a TypeScript error. Why?
Typescript
interface Settings {
  theme: string;
  notifications: boolean;
}

const defaultSettings: Settings = { theme: "dark", notifications: true };

const newSettings: Partial<Settings> = { theme: undefined };

const finalSettings: Settings = { ...defaultSettings, ...newSettings };
ABecause 'theme' cannot be undefined in Settings, but newSettings sets it to undefined
BBecause Partial does not allow undefined values
CBecause spread operator cannot merge Partial types
DBecause defaultSettings is missing a required property
Attempts:
2 left
💡 Hint
Check the type of 'theme' in Settings and what value is assigned in newSettings.
🧠 Conceptual
advanced
2:00remaining
How does Partial affect nested objects?
Given the interface below, what does Partial do to the nested 'address' property?
Typescript
interface Address {
  street: string;
  city: string;
}

interface User {
  name: string;
  address: Address;
}

const partialUser: Partial<User> = { address: { city: "New York" } };
APartial<User> makes 'address' required and its properties optional
BPartial<User> makes both 'address' and its properties optional
CPartial<User> makes 'address' optional but does not make its properties optional
DPartial<User> makes 'address' and its properties required
Attempts:
2 left
💡 Hint
Partial only applies to the top-level properties of the type.
🚀 Application
expert
3:00remaining
How to create a recursive Partial type?
Which of the following TypeScript code snippets correctly defines a recursive Partial type that makes all nested properties optional?
Atype DeepPartial<T> = Partial<T> & { [P in keyof T]: Partial<T[P]> };
Btype DeepPartial<T> = { [P in keyof T]?: DeepPartial<T[P]> };
Ctype DeepPartial<T> = Partial<T> | { [P in keyof T]?: DeepPartial<T[P]> };
Dtype DeepPartial<T> = { [P in keyof T]: T[P] | undefined };
Attempts:
2 left
💡 Hint
Recursive mapped types use conditional or mapped types to apply Partial deeply.